ここで説明されているように、ビューをオブジェクトのリストにバインドしようとしています リストへのモデルのバインド
私の問題は、リストが POST を介して返されたときです。リストには最初に送信した正しい数の要素が含まれていますが、オブジェクト内の値は設定されていないかのように返されます。モデルバインダーを正しく解析するために何を見逃したのかわかりません。
ここに私のテストコードがあります:
私のモデルは次のとおりです。
IList<Test>
ここで、Test は次のように定義されます。
public class Test
{
public int x;
}
私の TestController では、ポストバックを持つメソッド「Create」を使用しています。
public ActionResult Create()
{
List<Models.Test> testList = new List<Models.Test>() {
new Models.Test() { x = 5 }
};
return View(testList);
}
//
// POST: /Test/Create
[HttpPost]
public ActionResult Create(IList<Models.Test> tests)//Models.TestContainer tc)
{
return View(tests);
}
および「作成」ビューのコード:
@model IList<ksg.Models.Test>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>TestContainer</legend>
@Html.EditorFor(x => x[0])
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
そして最後に、Test クラスのエディター テンプレート:
@model ksg.Models.Test
@using ksg.Helpers
<div>
@Html.TextBoxFor(x => x.x)
</div>
上記のように、 で 1 アイテムのリストを送信しますTest.x = 5
が、 でブレークポイントを設定すると Create(IList<Models.Test> tests)
、 tests には で 1 つのオブジェクトが含まれますx = 0
。
私が見逃したアイデアはありますか?