2014-11-06 36 views
0

我剛開始MVC,我想知道最好的做法傳遞般劃過的觀點ID的敏感信息...MVC最佳實踐傳遞的ID跨越意見

讓我們假設我有一個場景。 我有一個管理MVC應用程序的汽車服務,允許用戶爲他們的註冊車選擇產品。

用戶必須先註冊他們的汽車,然後才能爲他們的服務選擇產品。

在註冊視圖中,他們填寫汽車詳細信息,並在點擊提交按鈕時重定向購買產品頁面。當他們點擊提交按鈕時,我們會存儲帶有用戶ID(我可以從Identity獲得)的汽車詳細信息,並從數據庫生成唯一的汽車ID。我想將這個新創建的車輛ID傳遞給下一個視圖。

在購買產品頁面時,他們可以選擇不同的產品A或B,當他們選擇時,它會重定向到結帳頁面。

我現在想要實現的是在結帳頁面中,我們可以安全地攜帶用戶在註冊汽車和產品ID之後獲得的汽車ID,以便我可以使用用戶ID,carID,和productID。

會話的方式去與此?或者任何其他更好的方法來解決這個問題。 有小例子的人會對我很有幫助。

感謝,

+0

值得一看[MVC音樂商店教程](http://www.asp.net/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-1 )看看他們如何實現這一點,你可以考慮使用免費的開源電子商務購物車之一,如[nopCommerce](https://nopcommerce.codeplex.com/) – 2014-11-07 02:22:37

+0

只需將其存儲在數據庫中用戶的ID。你應該避免這個會話。 – heymega 2014-11-07 09:30:56

+0

爲什麼我應該避免會話的任何原因? – superted 2014-11-09 12:15:06

回答

0

在給予我一定會推薦存儲會話中的ID你的榜樣。網絡是一種無狀態的野獸,你在做的事情是在用戶訪問網站/應用程序期間記錄狀態 - 這實際上是會話設計的目的。

創建,存儲和從會話檢索數據是簡單,並且可以像這樣進行:

在會話對象

[HttpPost] 
public ActionResult Login(int carId) 
{ 
    ... 
    Session["carId"] = carId; 
    ... 
} 

設置一個變量從會話對象檢索變量

public ActionResult Load() 
{ 
    ... 
    int carId = Session["carId"]; 
    ... 
} 

雖然這是一個基本的例子e,它給你一個關於如何從會話中存儲/檢索簡單類型數據的想法。

若要存儲更多信息,例如大對象,可以使用[Serialize]類屬性outlined in my answer in this post