2013-02-28 27 views
1

我有兩個視圖和兩個控制器。一個用於客戶,另一個用於他們的地址。客戶可以有一個地址。在我的客戶端模型定義中,我允許客戶端的addressID爲空。當我想爲客戶創建地址時,根據addressId爲空或不是,我將重定向到地址的「創建」或「詳細信息」視圖。現在我想在我到達創建視圖(「爲John Doe創建地址」)時顯示客戶端名稱。我如何去做這件事?我試圖慢慢地學習MVC,並且在處理關注點分離以及在何處傳遞數據方面遇到了困難。ASP.net MVC 4從一個視圖獲取用戶標識並在另一個視圖中使用它

+2

歡迎計算器。 ..和[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2013-02-28 07:32:55

回答

1

由於您正在手動重定向,因此您知道下一個請求是肯定的。在這種情況下,TempData最適合您的需求。如果您需要的數據超過下一個請求,您應該按照已經建議的使用Session或Cookies。

用它來存儲數據的下一個請求:

TempData["ClientName"] = "John Doe"; 

這讓數據列於下一個請求:

var clientName = TempData["ClientName"]; 

請注意,TempData的只是將數據存儲在下一個請求。有關TempData的MSDN進一步的信息是你的朋友:http://msdn.microsoft.com/en-us/library/dd394711%28v=vs.100%29.aspx

+1

真棒我愛tempdata。這和使用視圖包有什麼區別? – Fpanico 2013-02-28 21:00:12

+0

ViewBag是一種將強制從控制器輸入到視圖的數據的方法。我使用ViewBag(或弱類型的對應ViewData),當我有一個模型會矯枉過正的觀點。除了TempData之外,其數據在重定向後不會持久。 – dasheddot 2013-03-01 06:08:33

0

試着爲別人提供一些代碼來更好地幫助你,但是現在我可以告訴你的是你希望跨請求保持狀態,因此你有很多選擇。您可以保持會話狀態,您可以將查詢字符串附加到您的以下請求中,您可以讓cookie傳輸該ID等。

0

我會使用會話此推薦你..存儲用戶名是session("username")和視圖或ü想任何控制器使用它..

相關問題