ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
导航属性 类型设置为ICollection 时
public virtual ICollection<DepartmentDetail> DepartmentDetails { get; set; }
@for (var i = 0; i < Model.DepartmentDetails.Count(); i++) { <div class="form-group"> @Html.HiddenFor(model => model.DepartmentDetails.ToList()[i].Id) @Html.HiddenFor(model => model.DepartmentDetails.ToList()[i].DepartmentId) @Html.LabelFor(model => model.DepartmentDetails.ToList()[i].Population, htmlAttributes: new { @class = "control-label col-xs-2" }) <div class="col-xs-4"> @Html.EditorExtFor(model => model.DepartmentDetails.ToList()[i].Population, new { htmlAttributes = new { @class = "form-control" } }) </div> @Html.LabelFor(model => model.DepartmentDetails.ToList()[i].BuildingsCount, htmlAttributes: new { @class = "control-label col-xs-2" }) <div class="col-xs-4"> @Html.EditorExtFor(model => model.DepartmentDetails.ToList()[i].BuildingsCount, new { htmlAttributes = new { @class = "form-control" } }) </div> </div> }
后台将取不到
导航属性类型应设为IList
<div class="form-group"> @Html.HiddenFor(model => model.DepartmentDetails[i].Id) @Html.HiddenFor(model => model.DepartmentDetails[i].DepartmentId) @Html.LabelFor(model => model.DepartmentDetails[i].Population, htmlAttributes: new { @class = "control-label col-xs-2" }) <div class="col-xs-4"> @Html.EditorFor(model => model.DepartmentDetails[i].Population, new { htmlAttributes = new { @class = "form-control" } }) </div> @Html.LabelFor(model => model.DepartmentDetails[i].BuildingsCount, htmlAttributes: new { @class = "control-label col-xs-2" }) <div class="col-xs-4"> @Html.EditorFor(model => model.DepartmentDetails[i].BuildingsCount, new { htmlAttributes = new { @class = "form-control" } }) </div> </div>