【发布时间】:2011-02-05 18:08:29
【问题描述】:
在我正在处理的项目中,我有一个列表List<Item>,其中包含保存在会话中的对象。 Session.Add("SessionName", List);
在控制器中,我使用来自该会话的数据构建了一个 viewModel
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>
当提交按钮的帖子被处理时,该项目从数组中删除并回发完全相同的视图模型(在 itemList 中少了 1 个项目)。
return View("view.ascx", viewModel);
当帖子被处理并且视图重新加载了 html.Hidden 和 Html.Textbox 的值是被删除项的值。 html.Encode 的值是正确的值。当我重新加载页面时,正确的值在字段中。两次我都以完全相同的方式构建视图模型。
我找不到此错误的原因或解决方案。我很乐意为解决这个问题提供任何帮助
提前感谢任何提示和帮助
【问题讨论】:
标签: c# asp.net session arrays viewmodel