我們有一個複雜的購物車結構。複雜性在於定價結構。需要大量不同的數據庫實體來計算所有的定價。由於其複雜性,我們僅爲每個客戶的購物車存儲少量數據,而當我們需要購物車時,我們會讀取所有這些購物車數據以及數據庫中的許多定價部分 - (編輯)並將結果寫入購物車物品,完成總計。這不幸的是在時間上相對昂貴。MVC - 我如何在佈局和視圖中共享模型
我們的主站點佈局(編輯)獲取購物車對象並顯示購物車的鏈接,並顯示應付金額,如果購物車中有任何物品。
我們的網頁可能會顯示或不顯示購物車中的其他信息。例如,「關於我們」頁面不需要購物車,但網站佈局仍然需要它。
我爲購物車設置了一個全局對象。我可以從主站點佈局訪問該對象。我也可以把它放到頁面的視圖模型中。
因此,有時主站點佈局實例化購物車,並且視圖模型獨立實例化購物車。
(編輯)因此,網站佈局需要每個網頁的購物車對象 - 而且網頁可能不需要購物車對象。
問題:該視圖可能有也可能沒有可放入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
如果關於我們的頁面需要它,然後在控制器中計算它。你已經知道你需要它,所以在視圖被調用之前做好它。 – jcolebrand 2013-02-18 19:52:47
jcolebrand - 感謝您的回覆。如果頁面需要它,我可以在控制器中進行計算,然後將購物車傳送到視圖中,然後視圖可以將購物車傳遞到佈局中。但是,如果網頁不需要它,那麼佈局如何獲得購物車的副本?另外,如果在別的地方需要它,我該如何移動它?我的問題是:是否有一種方法可以僅按請求實例化,然後使其具有「全局」可用性? – Cary 2013-02-18 21:27:40
對於您所描述的內容,我會將其視爲「放入基本控制器」。 – jcolebrand 2013-02-18 23:06:35