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(Model.SubItemsのvar item){...}を実行します。しかし、これは異なります。これをどのように処理しますか?

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 に答える