在亚当弗里曼的Pro ASP.NET MVC 4 * 4th * Edition和“构建购物车”第 219 页中,他定义了一个购物车实体:
public class Cart
{
private List<CartLine> lineCollection = new List<CartLine>();
public void AddItem(Product product, int quantity)
{
CartLine line = lineCollection
.Where(p => p.Product.ProductId == product.ProductId)
.FirstOrDefault();
if (line == null)
{
lineCollection.Add(new CartLine { Product = product, Quantity = quantity });
}
else
{
line.Quantity += quantity;
}
}
//Other codes
public class CartLine {
public Product Product { get; set; }
public int Quantity { get; set; }
}
}
此模型从AddToCart操作方法调用:
public RedirectToRouteResult AddToCart(Cart cart, int productId, string returnUrl)
{
Product product = ctx.Products.FirstOrDefault(p => p.ProductId == productId);
if (product != null)
{
cart.AddItem(product, 1);
}
return RedirectToAction("Index", new { returnUrl });
}
当我们第一次将产品添加到购物车时,它会添加到“lineCollection”列表中。但是如果我们再次添加这个产品,“ line.Quantity ”会增加,“ lineCollection ”也会得到更新( “ lineCollection ”列表中这个产品的“ Quantity ”属性也会增加)。我的问题是这个更新(增加“ lineCollection ”的产品数量)是如何发生的?我们没有直接改变“ lineCollection ”?
为。。。道歉:
- 我的英语不好
- 我的乱七八糟的问题