これが本当にばかげた質問である場合はお詫び申し上げます。
次のようなリストを含むモデルがある場合:
public class Edit_model
{
public List<Other_model> Items { get; set; }
/// <summary>
/// Default class constructor
/// </summary>
public RecipesEdit_model()
{
this.Items = new List<Other_Model>();
}
}
Edit
そして、これをアクションに渡し、入力Items
してからビューに送信します。はリストなのでItems
、私はいつも次のようなことをしようとしています:
<div>
<ul>
@foreach (var item in Model.Items)
{
<li>
@Html.EditorFor(m => item, "_ItemEditorTemplate")
</li>
}
</ul>
</div>
これは、テンプレートで生成されたコントロールの ID を常に台無しにするため、Edit
ポスト アクションでのモデル バインディングは機能しません。
ただし、次のようにループをItems
使用してループすると機能します。for
<div>
<ul>
@for (int i = 0; i < Model.Items.Count; i++)
{
<li>
@Html.EditorFor(m => m.Items[i], "_ItemEditorTemplate")
</li>
}
</ul>
</div>
関数で実際に正しい変数を使用してラムダ式を取得するため、それが機能する理由がわかります...しかし、C#でのプログラミングの経験から、インデックス作成の問題が発生する可能性があるため、これはあまり好きではありません。むしろ使うforeach
。
これを機能させるための構文は何foreach
ですか?