2011-04-15 60 views
0

我使用MVC 3與火花視圖引擎。我有一個應該在每個頁面中訪問的數據,數據基於用戶登錄信息。所以我收集數據時,用戶在裏面,我把它放在會議上。我使用控件來處理站點主數據(母版頁)中的數據。會話中的數據將被綁定到該控件(例如Dropdownlist)。如何在視圖中訪問會話asp.net mvc

是在asp.net MVC的母版頁上處理數據的最佳做法嗎? 我嘗試爲控制器創建基類,buat我無法持有登錄憑證(HttpContext.User.Identity)。 我如何從View中訪問會話數據?

我嘗試{火花視圖引擎會話[ 「MYDATA」]}使用@Session [ 「MYDATA」](!但它沒有工作:(

任何幫助?

回答

1

有兩種常用的方法來處理這個問題 一個是從你的佈局(母版頁)使用Html.RenderAction,這樣你就可以提前將所有的數據打包成一個母版頁將要使用的模型

第二種方法是讓你的控制器從另一個控制器繼承,當基礎控制器被實例化時,它負責填充ViewData機智h所需的數據然後顯示在頁面上。這要求您的所有控制器都從您的基本控制器繼承。 見掛牌4/5: http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs

您也可以通過一個動作過濾器做到這一點(和其他方式太!),但我認爲以上兩種方式都有點清潔

0

你應該能夠通過在控制器基類中調用System.Threading.Thread.CurrentPrincipal.Identity.Name來獲取登錄用戶的憑證。

這應該允許您填充ViewData,然後從您的視圖中訪問數據。

另外,如果你仍然想使用session,你應該能夠通過訪問會話 - HttpContext.Current.Session [「MYDATA」]

+0

感謝Naraen for System.Threading.Thread.CurrentPrincipal:D – 2011-04-18 03:34:05

0

可以使用TempData的[「名稱」]分享數據在控制器中執行不同的操作。請記住,一旦檢索到值,它將刪除數據,但可以使用.Peek和.Keep方法功能來存儲其值

相關問題