Asp.net mvc 如何使用Url.Action传递模型?

Asp.net mvc 如何使用Url.Action传递模型?,asp.net-mvc,Asp.net Mvc,我想在jquerydailog中返回一个局部视图,并想将viewmodel对象传递给特定的控制器操作,如何做到这一点 查看 @Html.DropDownListFor(model => model.SelectedCountry, new SelectList(Model.CountryList, "CountryCode", "CountryName"), "---SELECT COUNTRY---", new {

我想在jquerydailog中返回一个局部视图,并想将viewmodel对象传递给特定的控制器操作,如何做到这一点

查看

@Html.DropDownListFor(model => model.SelectedCountry, new SelectList(Model.CountryList, "CountryCode", "CountryName"), "---SELECT COUNTRY---",
                                    new { @class = "chosen", @onchange = "this.form.action='/Home/Index'; this.form.submit(); " })
<input type="button" id="button1" value="Push"/>
<div id="dialog" title="Report" style="overflow: hidden;"></div>

当前,“homeViewModel.SelectedCountry”为空,如何在Jquery中传递模型?

如果使用内置JSON帮助器将模型转换为JSON对象,只需将请求修改为:

$(this).load('@Url.Action("CreatePartial")',@Html.Raw(Json.Encode(Model)));
@需要使用Html.Raw来阻止Html编码


我对它进行了测试,它成功了。

如果您使用的是AJAX,就不应该使用HTTP GET将模型传递给服务器。相反,使用HTTPPOST(如
$().ajax({method:'POST'})
,并将数据作为POST数据(
$().ajax({method:'POST',data:@Html.Raw(Json.Encode(Model))})传递。

请注意,它只适用于小模型,因为URL有长度限制(至少在几种浏览器中).你说得对。
public ActionResult CreatePartial(HomeViewModel homeViewModel)
{
        return PartialView("_CreatePartial", homeViewModel);
}
$(this).load('@Url.Action("CreatePartial")',@Html.Raw(Json.Encode(Model)));