В проекте, над которым я работаю, у меня есть список List<Item>
с объектами, которые сохраняются в сеансе. Session.Add("SessionName", List);
В контроллере я создаю модель представления с данными этого сеанса
var arrayList = (List<Item>)Session["SessionName"];
var arrayListItems= new List<CartItem>();
foreach (var item in arrayList)
{
var listItem = new Item
{
Amount = item.Amount,
Variant= item.variant,
Id = item.Id
};
arrayListItems.Add(listItem);
}
var viewModel = new DetailViewModel
{
itemList = arrayListItems
}
и в моем представлении я делаю цикл по списку предметов и создаю форму, чтобы все они могли удалить предмет.
<table>
<%foreach (var Item in Model.itemList) { %>
<% using (Html.BeginForm()) { %>
<tr>
<td><%=Html.Hidden(Settings.Prefix + ".VariantId", Item .Variant.Id)%>
<td> <%=Html.TextBox(Settings.Prefix + ".Amount", Item.Amount)%></td>
<td> <%=Html.Encode(Item.Amount)%> </td>
<td> <input type="submit" value="Remove" /> </td>
</tr>
<% } %>
<% } %>
</table>
Когда публикация с кнопки отправки происходит вручную, элемент удаляется из массива и отправляет обратно точно такую же модель представления (с 1 элементом меньше в itemList).
return View("view.ascx", viewModel);
Когда сообщение обрабатывается и представление перезагружается, значения html.Hidden и Html.Textbox являются значениями удаленного элемента. Значение html.Encode является правильным значением. Когда я перезагружаю страницу, правильные значения находятся в полях. Оба раза я строю ViewModel точно так же.
Я не могу найти причину или решение этой ошибки. Я был бы очень рад любой помощи, чтобы решить эту проблему
Спасибо заранее за любые советы и помощь