我有一个多选ListBoxFor控件,如mvc view
所示@using ExampleViewModel
@using (Html.BeginForm("SaveExample", "Example", FormMethod.Post, new { @id
= "exampleForm" }))
{
@Html.ListBoxFor(x => x.AssignedContainers, new
MultiSelectList(Model.RegisteredContainers, "ID", "Description", null),
new { @class = "fieldNoFocusRequiredListBox", @size = 15,
id="RegisteredContainers" })
}
查看模型代码如下所示:
public class ExampleViewModel
{
public int[] AssignedContainers { get; set; }
public List<Container_Sizes> RegisteredContainers { get; set; }
}
控制器代码:
public ActionResult SaveExample(ExampleViewModel model)
{
// code
return Json(true, JsonRequestBehavior.AllowGet);
}
我能够将列表框与模型属性RegisteredContainers绑定。我做了一些jQuery验证,然后通过像这样的ajax提交表单:
function SaveProduct() {
if (!ValidateProductForm()) {
return;
}
$.ajax({
type: "POST",
data: $('#exampleForm').serialize(),
url: '/Example/SaveExample/',
success: function (result) {
},
error: function (jqXhr, error, errorThrown) {
}
});
}
当断点到达控制器时,ExampleViewModel - &gt; AssignedContainers为null。请注意,我为此属性AssignedContainers使用了ICollection / IEnumerable / List,但没有运气。此外,当我在调试器监视器中看到$('#exampleForm')。serialize()时,我看到“.....&amp; AssignedContainers = 17”,因为列表框中有一个项目,但在控制器上收到null。
我是否需要对模型活页夹进行任何更新或这里出了什么问题?