Javascript 将下拉字符串从视图传递到控制器方法
我的问题分为两部分 (一) 我试图通过ajax调用将一个字符串从索引视图传递到一个方法(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不
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 }
);
}
}