2016-07-26 42 views
1

我想爲MVC應用程序製作一個持久性購物車,換句話說,如果用戶在登錄時將某些產品添加到他/她的購物車中,並且在未訂購或從購物車中取出物品的情況下離開應用程序。我想讓用戶在購物車中添加商品,直到某些時間可以說一個月,手動訂購或從他/她的購物車中移除商品。 在asp.net sessionState中保存購物車是否是個好主意?如果是,在哪種模式下,狀態服務器,InProc,Out of Process或SQLServer? Regards是否專業將用戶購物車保存在sessionState中以便使用asp.net進行持久保存?

+0

購物車中的物品沒有收集到錢。你*不想*將它們存儲在非持久存儲中。此外,它們不僅僅是Web應用程序的一些狀態,它們是客戶的潛在訂單,應該可以從其他系統訪問。將它存儲在適當的數據庫表中只是一個選項 –

回答

1

只要用戶正在與您的網站進行交互,會話狀態就會持續。技術上稍長一點,但一旦用戶導航或關閉瀏覽器,您應該考慮關閉會話。

選項A: 在用戶的計算機上使用cookie將項目存儲在其購物清單中。儘量少存儲信息,可能只是產品SKU和數量。

例如:要創建的cookie

HttpCookie cartCookie = new HttpCookie("TheCart"); 
DateTime now = DateTime.Now; 

// Possibly a serialised string of the shopping cart object (ensure no sensitive info though) 
cartCookie.Value = shoppingCartData; 

// Set when the cookie should expire. 
cartCookie.Expires = now.AddMonths(1); 

// Add the cookie too the response 
Response.Cookies.Add(cartCookie); 

讀取該cookie:

HttpCookie cartCookie = new HttpCookie("TheCart"); 
cartCookie = Request.Cookies["TheCart"]; 

選項B: 如果您的用戶已登錄,然後堅持一個數據的車狀態存儲 - 例如關係數據庫,磁盤或NoSQL數據庫。

+0

似乎是一個非常引人注目的答案,但請您告訴我sessionState用於什麼? – Dawar

+0

會話狀態用於在用戶忙於瀏覽您的網站時跟蹤數據。它可以節省您不得不在頁面之間發佈數據,並在用戶的上下文中提供「全局」狀態包。還有視圖狀態,該視圖狀態嵌入在頁面和應用程序狀態中,該狀態在所有用戶中是全局的。通常,您需要混合這些概念(會話狀態,Cookie,應用程序狀態和視圖狀態)以獲得最佳解決方案。閱讀它們以獲得進一步瞭解哪些地方在哪裏使用。 –

+0

非常感謝:)這些建議太有幫助 – Dawar

相關問題