У меня есть форма, состоящая из множества предметов (подумайте о порядке заказа на заказ амазонки). С каждой строкой связан флажок, поэтому пользователь может выбрать несколько элементов и нажать «удалить».
Форма построена примерно так:
<% 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>
<% } %>
Подшивка модели отлично работает, и список заполнен правильно. Однако после того, как я обработаю запрос в действии (например, удалим соответствующие элементы) и вернусь к новому представлению, содержащему меньше элементов, состояние формы «полу» сохраняется. Некоторые флажки остаются установленными, хотя в модели редактирования все значения bool установлены на false.
У меня нет этой проблемы, если я возвращаю RedirectToActionResult
, но использование этого в качестве решения кажется немного хакерской работой.
Я думаю, что мне нужно очистить / обновить ModelState или что-то похожее, но я не уверен, какие термины нужно искать, чтобы узнать, как это сделать.