将MVC ListBoxFor值提交给控制器

时间:2018-04-10 15:17:42

标签: asp.net-mvc razor

我有一个多选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。

我是否需要对模型活页夹进行任何更新或这里出了什么问题?

0 个答案:

没有答案