我有一个AddToCart
动作方法,通过ajax将产品添加到购物车,它基本上工作正常,但有时(我无法确定它),例如我从一个类别中添加了一些产品,然后从另一个类别中添加了一些产品,并且总数增加了两倍,例如如果我从一个类别添加3,然后从另一个类别添加1,它将是4,然后再次为10!然后它将继续照常进行。
你能看到这段代码有什么问题吗?
public ActionResult AddToCart(string id)
{
List<CartVM> cartVMList = new List<CartVM>();
CartVM cartVM = new CartVM();
int productId = Int32.Parse(id);
int qty = 0;
decimal price2 = 0;
Db db = new Db();
var result = db.Products.FirstOrDefault(x => x.Id == productId);
decimal price = result.Price;
cartVM.ProductId = productId;
cartVM.Quantity = 1;
cartVM.Price = price;
if (Session["cart"] != null)
{
cartVMList = (List<CartVM>)Session["cart"];
var itemToEdit = cartVMList.FirstOrDefault(x => x.ProductId == productId);
if (itemToEdit == null)
{
cartVMList.Add(cartVM);
}
else
{
itemToEdit.Quantity++;
}
foreach (var item in cartVMList)
{
qty += item.Quantity;
price2 += item.Quantity * item.Price;
}
cartVM.Quantity = qty;
cartVM.Price = price2;
}
else
{
cartVMList.Add(cartVM);
Session["cart"] = cartVMList;
}
return PartialView(cartVM);
}
基本上if (Session["cart"] != null)
部分是它的主要部分,而我认为问题出在哪里。
答案 0 :(得分:0)
你的方法包含很多不必要的东西,可以简化很多:
docker images --tree