6
MVCでサイトを構築しています。ビューに渡すビューにカスタムオブジェクトのIEnumarableリストが含まれているカスタムオブジェクトが含まれています。.NET MVC Razor動的フォームの生成
razorは、任意の数のオブジェクトであるIEnumerableのフォームを動的に生成するという考えです。
@foreach (var data in Model.Kpi.Values)
{
<div class="editor-label">
@Html.Label(data.Field.Name);
</div>
<div class="editor-field">
@Html.EditorFor(model => data.Value)
@Html.ValidationMessageFor(model => data.Value)
</div>
}
フォームは、データアノテーションを完全に表示しますが、コントローラのポスト関数ではIEnumerableはnullです。
[HttpPost]
public virtual ActionResult Create(KpiCreateViewModel vm)
{
return this.RedirectToAction(MVC.Kpi.Index());
}
return文にブレークポイントを設定し、vm変数の内容を検査しました。
誰でもフォームデータを取得する方法を提案できますか?事前
EditorFor
方法は、あなたが戻って投稿するとき
DefaultModelBinder
で使用可能な名前を生成するのに十分な情報を持っていないためにです
[このポスト](http://stackoverflow.com/questions/1983999/how-to-use-editorfor-inside-a-foreachが)あなたが 'foreach'を使用できることを示唆している、と述べました。しかし、生成されている名前を見て、それはあなたに手がかりを与える必要があります。 –
それは戦いの半分をしたようです。オブジェクトには値がありますが、Field.nameはありません。 KpiValueクラスを明確にするために、プロパティ、フィールドオブジェクト、Kpiオブジェクト、および値文字列があります。 「フィールド」を特定する方法が必要です。 – JConstantine