【问题标题】:ASP.NET MVC 5, Storing list values in SessionASP.NET MVC 5,在 Session 中存储列表值
【发布时间】:2018-05-12 20:15:55
【问题描述】:

我正在尝试将产品列表存储在我存储在会话中的 List 中,但是当我添加第二个产品时,它只显示在我的查看页面中。 .....

List<ShoppingCartItem> ShoppingCartItems = new List<ShoppingCartItem>
        {
            new ShoppingCartItem() {Product = product.Name, Attributes = atts, Options = opts, Price = producttotalprice, Quantity = 1}
        };

        if (Session["Cart"] == null)
        {
            Session["Cart"] = ShoppingCartItems;
        }

        return View(Session["Cart"]);

    }

任何人都可以帮我取回我存储的所有产品。

【问题讨论】:

  • 添加第二个产品的代码在哪里?

标签: asp.net-mvc list session


【解决方案1】:

每次都会创建一个new List&lt;ShoppingCartItem&gt;,并且只在该列表中放置一个元素。 听起来您想首先检查会话中是否有已经列表。如果是这样,请将新元素添加到 that 列表中。像这样的:

List<ShoppingCartItem> shoppingCartItems;
if (Session["Cart"] != null)
{
    shoppingCartItems = (List<ShoppingCartItem>)Session["Cart"];
}
else
{
    shoppingCartItems = new List<ShoppingCartItem>();
}

shoppingCartItems.Add(new ShoppingCartItem() {Product = product.Name, Attributes = atts, Options = opts, Price = producttotalprice, Quantity = 1});
Session["Cart"] = shoppingCartItems;

return View(shoppingCartItems);

【讨论】:

    【解决方案2】:

    如果那是“添加”代码,那么您实际上并没有修改列表。您正在声明一个包含新产品的全新 ShoppingCartItems 列表。

    它适用于第一个产品,因为它返回 true:

    if (Session["Cart"] == null)
    

    第二次是假的,没有任何反应。你想做的是:

    1) 检索作为“列表”的会话购物车(如果它为空,则初始化一个新的。

    2) 从已传递给控制器​​的产品中创建一个新的 ShoppingCartItem。将该产品添加到购物车。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多