[英]Asp.NET: Get all of the values from the list of object in a model when submitting a form
我有一个包含列表的模型,我在其中循环了表单内的某些属性。 当我单击保存按钮以保存列表时,模型内的列表为null。
那么我将如何获取带有值的列表? 我想获取所有选定的栏并进行处理,以保存将哪些栏添加到Foo中。
这是我的示例代码。
ViewModel:
public class FooViewModel
{
public FooViewModel()
{
BarList = new List<BarViewModel>();
}
public List<BarViewModel> BarList { get; set; }
}
public class BarViewModel
{
public string BarId { get; set; }
public bool IsSelected { get; set; }
}
控制器:
public ActionResult AddBar(int id, string otherId)
{
//omitted the codes
}
[HttpPost]
public ActionResult AddBar(int id, string otherId, FooViewModel model)
{
//omitted the codes
}
视图:
@model FooViewModel
@using (Html.BeginForm("AddBar", "Foo", FormMethod.Post, new { role = "form", autocomplete = "off", enctype = "multipart/form-data" }))
{
@foreach (var bar in Model.BarList)
{
@Html.HiddenFor(bar => bar.Id)
@Html.CheckBoxFor(bar => bar.IsSelected)
}
}
您应该在BarList上更改周期以使用for
循环而不是foreach
。
@for (var i = 0; i < Model.BarList.Length; i++ )
{
@Html.HiddenFor(mdl => mdl.BarList[i].Id)
@Html.CheckBoxFor(mdl => mdl.BarList[i].IsSelected)
}
这样,正确的ID和名称将被添加到<hidden>
和<input>
标记中,以便MVC能够对其进行正确的模型绑定。
您可以在Internet上阅读有关模型绑定和集合的更多信息,例如: http : //haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.