【发布时间】:2014-11-17 19:59:53
【问题描述】:
视图模型
//MainViewModel
public class MainViewModel
{
public string UserID { get; set; }
public string ServiceType { get; set; }
public List<Service> Services {get; set;}
}
public class Service
{
public string ServiceID {get; set;}
public string ServiceName {get; set;
}
这里是视图
//Index.cshtml
@model ParentViewModel
@{
<div>
@Html.DropDownListFor(model => model.UserID, new{onchange="ddSelectionChanged(this)"})
<div id="services">
//This is filled with the ajax
</div>
</div>
}
这里是 AJAX 调用
<script>
function ddSelectionChanged(element){
$('#services').load('@(Url.Action("GetServices"))?serviceType =' element.value);
};
</script>
这里是控制器
//Controller
public class UserServicesController : Controller
{
public ActionResult Index()
{
return View();
}
public PartialViewResult GetServices(string serviceType)
{
//Service servicesViewModel = Fetch Services from DB
return PartialView("PartialViews/Shared/_Services", servicesViewModel);
}
}
这工作正常,部分视图按预期呈现,但是当我发布索引时,MainViewModel 的属性“服务”返回“null”。问题是模型的“服务”属性没有重新绑定到 MainViewModel,因为它动态呈现为局部视图。
如何在局部视图渲染时或在 POST 表单之前重新绑定模型?
【问题讨论】: