サーバーからデータを正しく受信したにもかかわらず、MVC3カミソリのフォームがforeach
コードブロック内に重複した値をレンダリングすることは興味深いことでした。ここに私の単純な形式は... MVC3カミソリでMVC3剃刀「For」モデル - 内容が複製された
ある - 戻り上記のアクションを保存
[HttpPost]
public ActionResult Save(ViewModel.CategoryForm cat)
{
... save the data based on posted "cat" values (I correctly receive them here)
List<Category> cL = ... populate category list here
return View(cL);
}
- 私の.cshtmlページのサンプル
@model List<Category>
@using (@Html.BeginForm("Save", "Categories", FormMethod.Post))
{
foreach (Category cat in Model)
{
<span>Test: @cat.CategoryName</span>
<span>Actual: @Html.TextBoxFor(model => cat.CategoryName)</span>
@Html.HiddenFor(model => cat.ID)
<p>---</p>
}
<input type="submit" value="Save" name="btnSaveCategory" id="btnSaveCategory" />
}
私のコントローラのアクションは、次のようになります正しいデータを持つモデル。
上記フォームを送信した後、私はアクションが完了すると、次のようなカテゴリの値を見ることを期待...
Test: Category1, Actual:Category1
Test: Category2, Actual:Category2
Test: Category3, Actual:Category3
Test: Category4, Actual:Category4
しかし@Html.TextBoxFor
は、リストから最初の値を複製します。フォームを投稿した後、以下のような応答が表示されます。 「実際」の値は、サーバーから正しいデータを取得しても繰り返されます。
Test: Category1, Actual:Category1
Test: Category2, Actual:Category1
Test: Category3, Actual:Category1
Test: Category4, Actual:Category1
私は間違っていますか?どんな助けもありがとう。