2011-09-21 23 views
0

在我的asp.net MVC應用程序中,我想添加一個變量(一種用戶擁有的系統標誌),只要頁面加載或用戶執行特定操作就可以訪問該變量。我決定爲此添加一個會話變量(這看起來是否合理?),我只需要從數據庫中的表中獲取標誌。我的計劃是在Session_Start上設置變量,但這似乎不是正確的方法,因爲我需要查詢數據庫,而且我不確定是否應該從Global.asax中進行查詢。我應該在哪裏填充這個變量?還是有更好的方法來做到這一點?在asp.net中從數據庫添加會話變量的最佳方式是什麼?

在此先感謝!

回答

0

會話變量是一個合理的選擇,session_start可以是獲取值的地方。但是,如果該值是用戶特定的,那麼在這種情況下,您需要用戶身份。身份驗證將建立用戶身份而不是會話開始(兩者在ASP.NET中都是獨立的) - 所以不是session_start,更好的辦法是Application_AcquireRequestState你應該檢查用戶是否被認證,如果是,那麼檢查你的會話變量是否有被設置或沒有。如果未設置,則可以從數據庫中獲取值。

稍有不同就是按需加載,即創建包裝方法來獲取標誌值。 Wrapper方法將檢查是否已經檢索到值 - 如果不是,則它將獲取它並將該值緩存在合適的存儲區中(例如會話狀態)。

+0

謝謝!包裝方法是否檢查每個請求或頁面加載的值而不是session_start? – Kai

+0

@Kai,當你實際需要標誌值時應該使用包裝方法 - 因此名稱爲「按需(或惰性)加載」。包裝方法將是唯一的方法,應該訪問標誌值 - 其餘的代碼將不知道如果提取的值和緩存的位置。 – VinayC

相關問題