0

我有一个看起来像这样的模型:

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(var item in Model.SubItems) { ... }。但这是不同的。我该如何处理?

4

1 回答 1

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,或您想要的任何迭代次数。

于 2013-02-15T18:02:49.160 回答