我们有一个复杂的购物车结构。复杂性在于定价结构。计算所有定价需要大量不同的数据库实体。由于复杂性,我们只为每个客户的购物车存储少量数据,当我们需要购物车时,我们会读取所有这些购物车数据以及数据库中的许多定价部分 - (编辑)并将结果放入一个购物车对象,包含总数。不幸的是,这在时间上相对昂贵。
我们的主站点布局(编辑)获取购物车对象并公开一个指向购物车的链接并显示到期金额(如果购物车中有任何物品)。
我们的页面可能会或可能不会显示购物车中的其他信息。例如,“关于我们”页面不需要购物车,但站点布局仍然需要它。
我为购物车设置了一个全局对象。我可以从主站点布局访问该对象。我也可以将它放入页面的视图模型中。
所以有时主站点布局实例化购物车,视图模型独立实例化购物车。
(编辑)所以网站布局需要每个页面的购物车对象 - 页面可能需要也可能不需要购物车对象。
问题:视图可能有也可能没有可以放入 ViewBag 的购物车,以便主站点布局可以使用它。如何在生命周期中只实例化一次购物车对象?
public class ShoppingCart
{
// Complex, data intensive calculations upon instantiation
}
public class myViewModel
{
public ShoppingCart cart {get; set;}
}
在主站点布局中:
@{
ShoppingCart cart = new ShoppingCart(GlobalMemberID);
}
在需要购物车的页面中:
@model myViewModel