簡體   English   中英

將下拉字符串從視圖傳遞到控制器方法

[英]Passing a DropDown string from a View to a Controller method

我的問題是一個兩部分的問題。

1)我試圖通過ajax調用將一個字符串從我的索引視圖傳遞到一個方法( UpdateView(string selectProductionLine) )中。 我可以通過 ajax 調用來調用該方法,但我無法將字符串變為空值。

2) UpdateView(string selectProductionLine)此方法( UpdateView(string selectProductionLine) )后,我希望它更新模型,然后使用該更新方法調用局部視圖。 目前我無法讓它調用該部分視圖。

我一直在尋找幾種不同的嘗試,下面的鏈接,但一直無法讓它發揮作用。 我的 JS 並不是那么好,我還是一個初學者,我很難結合其他人所做的。

索引視圖:

@(Html.Kendo().DropDownList()
      .Name("productionLine-dropdown")
      .DataTextField("Name")
      .DataValueField("Id")
      .DataSource(source =>
      {
           source.Read(read => { read.Action("GetDropDownList", "Home"); });
      })
      .Events(e =>
      {
           e.Close("OnClose");
      })
)
<div id="Dashboard">
@Html.Partial("~/Views/Home/_Home.cshtml", Model)
</div>

Java腳本:

function OnClose() {
    var selectProductionLine = $("#productionLine-dropdown").data("kendoDropDownList").value();
    $("#Dashboard").load('/Home/UpdateView', selectProductionLine);
}

function DropDownValue() {
    var value = $("#productionLine-dropdown").data("kendoDropDownList").value();
    return { selectProductionLine: value };
}

控制器:

public ActionResult _Home(DisplayViewModel dvm)
{
    return PartialView(dvm);
}

public ActionResult UpdateView(string selectProductionLine)
{
    DisplayViewModel dvm = new DisplayViewModel();
    //Some logic
    return PartialView("~/Home/_Home.cshtml", dvm);
}

問題:

1) 將一個字符串從 Index 傳遞到UpdateView()方法中。

2) 使用新的 ViewModel 從UpdateView() ) 調用_Home局部視圖。

謝謝!

更新 PartialView mvc 4

使用 DropDownList 更改上的新模型刷新 MVC PartialView

將列表/模型從視圖傳遞到控制器

https://cmatskas.com/update-an-mvc-partial-view-with-ajax/

好的,這里有兩個問題。

Javascript

首先,更改您的 .Load 方法以簡單地將 selecProductionLine 值連接到 URL 的末尾。

var selectProductionLine = $("#productionLine-dropdown").data("kendoDropDownList").value();
$("#Dashboard").load("/Home/UpdateView/" + selectProductionLine);

控制器動作

其次,您需要像這樣更改 UpdateView 函數以接收 Id。

public ActionResult UpdateView(string Id)
{
    DisplayViewModel dvm = new DisplayViewModel();
    ProductionLine pl = _productionLineService.Find(Id);
    dvm.ProdLine = new ProductionLineViewModel
    {
        Id = pl.Id,
        CreatedAt = pl.CreatedAt,
        Name = pl.Name,
        ActiveLine = pl.ActiveLine,
        ComputerName = pl.ComputerName,
        UPE = pl.UPE
   };
   return PartialView("~/Home/_Home.cshtml", dvm);
}

這是因為 RouteConfig.cs 中的默認路由使用 {controller}/{action}/{id} 作為任何請求的默認路由。

路由配置

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM