Javascript 将下拉字符串从视图传递到控制器方法

Javascript 将下拉字符串从视图传递到控制器方法,javascript,c#,ajax,asp.net-mvc,razor,Javascript,C#,Ajax,Asp.net Mvc,Razor,我的问题分为两部分 (一) 我试图通过ajax调用将一个字符串从索引视图传递到一个方法(UpdateView(string-selectProductionLine))。我可以通过ajax调用来调用该方法,但我无法将字符串设置为null以外的任何值 (二) 调用此方法(UpdateView(string selectProductionLine))后,我希望它更新模型,然后使用更新的方法调用局部视图。目前我无法将其称为局部视图 我一直在看一些不同的尝试,下面的链接,但一直无法让它工作。我的JS不

我的问题分为两部分

(一) 我试图通过ajax调用将一个字符串从索引视图传递到一个方法(
UpdateView(string-selectProductionLine)
)。我可以通过ajax调用来调用该方法,但我无法将字符串设置为null以外的任何值

(二) 调用此方法(
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>
控制器:

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) 将一个字符串从索引传递到
UpdateView()
方法中

2) 使用新的ViewModel从
UpdateView()
调用
\u Home
局部视图

谢谢


好的,这里有两个问题

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}作为任何请求的默认路由

RouteConfig

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 }
        );
    }
}

谢谢你的帮助,我编辑了你的回复,使之符合我的要求。这是非常接近,并引导我在正确的方向。
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 }
        );
    }
}