【问题标题】:how to handle a array of objects in a session如何处理会话中的对象数组
【发布时间】: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


    【解决方案1】:

    发生这种情况是因为您正在回发到同一个 URL。 ASP.NET 有一个内置机制来确保来自表单输入的值总是返回到浏览器,因为它们在回发到同一个 URL 时是相同的。我同意,这可能是一种非常烦人的行为,但在某处可能需要对它的基本原理进行冗长的讨论。对于初学者,它会破坏 ASP.NET 验证功能上使用相同值的自动填充。

    我发现解决问题的最简单方法是发布到不同的 URL 并重定向回来。您也可以通过 AJAX 处理请求来解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-19
      • 2014-12-16
      • 2011-09-04
      • 2017-10-26
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多