2012-05-20 83 views
2

我將一個webapp從一個框架佈局轉換爲Masterpage佈局。框架集中的每個頁面都使用通用的自定義類來獲取登錄的用戶,該自定義類繼承自Page。ASP.Net MasterPage的全局變量

我認爲一個接口將是正確的方式來轉換,但我真的錯了。什麼是存儲全局變量或類的最好和最有效的方法,以便Masterpage的每個內容頁面都可以引用已登錄的用戶類?

+1

這是爲asp.net? –

+0

是的,對不起,我忘了把這些信息放在 – mattgcon

+0

放到會話緩存中。會話緩存持續只要用戶登錄。 –

回答

1

使其成爲一個靜態方法的簡單靜態類,它將返回記錄的用戶類,不需要將此代碼與ASP.NET頁面綁定。如果獲取登錄用戶需要一些時間昂貴的操作(例如數據庫查詢)將會話記錄的用戶類實例存儲在會話中。這樣的事情:

public static class Users 
{ 

    public static User GetLoggedUser() 
    { 
    if (HttpContext.Current.Session["LoggedUser"] != null) 
    { 
     return (User)HttpContext.Current.Session["LoggedUser"]; 
    } 
    else 
    { 
     User usr = GetLoggedUserSomehow(); // here goes your current code to get user 
     HttpContext.Current.Session["LoggedUser"] = usr; 
     return usr; 
    } 
    } 

}