我有一个由许多项目组成的表格(想想亚马逊订单上的订单项目)。每行都有一个与之关联的复选框,因此用户可以选择许多项目并单击“删除”。
表格的构建有点像这样;
<% 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。
如果我返回 a ,我没有这个问题RedirectToActionResult
,但是使用它作为解决方案似乎有点棘手。
我想我需要刷新/刷新 ModelState 或类似的东西,但我不确定要搜索的术语以找出方法。