アイテムのリストを表示するASP.NETMVCアプリケーションがあります。ビューページで、アイテムをループして、次のように部分ビューで各アイテムをレンダリングします。
@foreach(var item in Model.items)
{
<li>
@Html.Partial("ItemView", item)
</li>
}
アイテムビューでは、次のように、[削除]ボタンのあるフォームで各アイテムをラップします。
@using(Html.BeginForm(...))
{
@Html.HiddenFor(m=>m.Id)
<label>@Model.Name (@Model.Id)</label>
<input type="submit" value="Delete"/>
}
アイテムは適切にレンダリングされ、結果のページには、適切な名前とIDが表示されたすべてのアイテムの適切なリストが表示されます。
編集:同じことが@Hiddenでも起こります、明らかに、私が以前に書いたものとは反対です。
さらに、これは、フォームが2回目にレンダリングされたとき(つまり、[削除]ボタンの1つがクリックされた後)にのみ発生し、最初はすべてが正常に機能しています。私のアクションメソッドは次のようになります。
public ActionResult AllItems()
{
var model = new AllItemsModel();
return PartialView(model);
}
public ActionResult Delete(DeleteModel model)
{
.... Perform the delete ...
return PartialView("AllItems", new AllItemsModel());
}
なぜこうなった?