我有一个看起来像这样的模型:
public class MyClass {
public string Id { get; set; }
public List<SubItem> SubItems { get; set; }
}
public class SubItem {
public string Key { get; set; }
public string Value { get; set; }
}
在我看来,我想将表单数据提交给MyClass,因此我可以创建一个MyClass对象。它看起来像这样:
@model Models.MyClass
@using (Html.BeginForm()){
<div>
@Html.DisplayFor(model => model.Id): @Html.EditorFor(model => model.Id)
</div>
<div>
@Html.DisplayFor(model => ???): @Html.EditorFor( ??? )
</div>
<input type="submit" value="create"/>
}
你看到我怀疑的问号(???)。如何添加到此集合中?我知道它是各种各样的子形式,但是如何在没有太多复杂性的情况下做到这一点。如果我需要显示项目,我会做一个foreach(Model.SubItems中的var项目){...}。但这是不同的。我该如何处理?
答案 0 :(得分:2)
与单独显示每个项目完全没什么不同:
@for (int i=0; i<Model.SubItems.Length; i++)
{
<div>
@Html.DisplayFor(m => m.SubItems[i].Key): @Html.EditorFor(m => m.SubItems[i].Key)
</div>
<div>
@Html.DisplayFor(m => m.SubItems[i].Value): @Html.EditorFor(m => m.SubItems[i].Value)
</div>
}
<强>更新强>
更改上面的代码以确保正确生成名称和索引值。此外,这也将适用于没有初始项目的场景。只需将i<Model.SubItems.Length
条件更改为i<3
,或者您想要的任何迭代次数。