例如:
模型
public class Person
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
人的编辑器模板(PersonEditor.cshtml):
@model MvcApplication1.Models.Person
@Html.HiddenFor(x=>x.ID)
<label>First Name</label>
@Html.TextBoxFor(x=>x.FirstName)
<label>Last Name</label>
@Html.TextBoxFor(x=>x.LastName)
<br />
在我的主页上,我希望能够执行以下操作:
@model IList<MvcApplication1.Models.Person>
@using (Html.BeginForm())
{
@Html.EditorFor(x=>x,"PersonEditor")
}
并拥有表格中的所有元素,自动生成专有名称;而不是像我现在所做的那样遍历集合:
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Count; i++)
{
@Html.EditorFor(x=>Model[i],"PersonEditor")
}
}
表单元素必须包含以下格式:
<input name="[0].ID" type="text" value="Some ID" />
<input name="[0].FirstName" type="text" value="Some value" />
<input name="[1].ID" type="text" value="Some x" />
<input name="[1].FirstName" type="text" value="Some y" />
等等...
因为在我的控制器中,我希望IList<Person>
在表单发布包时收到一个。
我可以完全消除那个 for 循环吗?
编辑
现在,当我简单地做@Html.EditorFor(x=>x)
(换句话说,没有循环)时,我得到了这个异常:
传入字典的模型项的类型为“MvcApplication1.Models.Person[]”,但此字典需要类型为“MvcApplication1.Models.Person”的模型项。