背景说明
在ASP.NET MVC中,有一个我们经常使用且十分好用的功能——模型绑定。
即在页面中指定该页面将会使用到的数据模型Model,然后在“显示数据”或“提交数据”时,就可以很方便的获取数据内容。
通常情况下这两种场景都比较容易实现,特别是“显示数据”时,不管绑定的模型如何复杂都可以轻松的显示所有你想要的数据。
但是,“提交数据”时,就不一定那么简单了。特别是当模型中包含一个List或者ICollection数据(即实现集合类型接口的数据),且该数据中包含的item数量不确定时,情况就变的有些棘手了。
问题描述
下面举一个这种情况的例子
假如要给一个系统录入一个某业务的操作说明页面,页面包含如下内容:1). 标题 2). 业务介绍 3). 操作步骤(录入前不确定多少步)
解决方案
因此,这个页面对应着如下模型 BusinessHelp
public class BusinessHelp
{
public string BusinessTitle{ get; set; }
public string BusinessDescription{ get; set; }
public virtual ICollection<StepDetail> StepDetails { get; set; }
}
在录入页面AddBusinessHelp.cshtml中,主要内容如下:
@model HospitalProject.Models.AdminModel.BusinessHelp
@using (Html.BeginForm("ActionName","ControllerName", FormMethod.Post))
{
@Html.TextBoxFor(m => m.BusinessTitle)
@Html.TextAreaFor(m => m.BusinessDescription)
<div id="movieEditor">
@foreach (StepDetail step in Model.StepDetails)
{
Html