我有一個由許多項目組成的表單(想想亞馬遜訂單上的訂單項目)。每行都有一個複選框與他們關聯,因此用戶可以選擇多個項目並單擊「刪除」。POST後的HTML.CheckBox持久狀態 - 刷新ModelState?
表單構建起來有點像這樣;
<% for (int i = 0; i < Model.OrderItems.Count; i++) { %>
<tr>
<td><%= Html.Hidden(String.Format("OrderItems[{0}].Id", i), Model.OrderItems[i].Id)%>
<%= Html.CheckBox(String.Format("OrderItems[{0}].Checked", i), Model.OrderItems[i].Checked)%></td>
<td><%= Html.TextBox(String.Format("OrderItems[{0}].Name", i), Model.OrderItems[i].Name)%></td>
<td><%= Html.TextBox(String.Format("OrderItems[{0}].Cost", i), Model.OrderItems[i].Cost)%></td>
<td><%= Html.TextBox(String.Format("OrderItems[{0}].Quantity", i), Model.OrderItems[i].Quantity)%></td>
</tr>
<% } %>
模型聯編程序完成它的魔術並且列表被正確填充。但是,在處理操作中的請求(例如,移除適當的項目)並返回包含更少項目的新視圖之後,表單狀態將保持「半」狀態。即使在編輯模型中所有的布爾值都設置爲false,仍然會檢查一些複選框。
我沒有這個問題,如果我返回RedirectToActionResult
,但使用它作爲解決方案似乎有點冒險的工作。
我想我需要刷新/刷新模型狀態,或類似的東西,但我不確定搜索條件來找出如何。
是的,我明白了 - 但爲什麼這個狀態會記住不同的請求呢? – Kirschstein 2009-11-16 14:45:41