我正在尝试在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"]);
}
任何人都可以帮助我检索我存储的所有产品。
答案 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。将该产品添加到购物车中。