ASP.NET MVC 5,在Session中存储列表值

时间:2018-05-12 12:07:29

标签: asp.net-mvc list session

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

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"]);

    }

任何人都可以帮助我检索我存储的所有产品。

2 个答案:

答案 0 :(得分:1)

您每次都在创建new List<ShoppingCartItem> ,并且只在该列表中放置一个元素。它听起来像你要首先检查会话中是否已经 一个列表。如果是这样,请将新元素添加到那个列表中。像这样:

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);

答案 1 :(得分:0)

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

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

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

第二次这是错误的,没有任何反应。你想要做的是:

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

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