2011-01-30 94 views
0

在我的母版頁,我加載一個變量在會議上是這樣的:使用會話變量

public partial class TheMasterPage : System.Web.UI.MasterPage 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!Page.IsPostBack) 
     { 
      ViewUserPreferences SessionUserPreferences = new ViewUserPreferences(); 
      SessionUserPreferences = UserPreferences.GetUserPreferencesFromDB(6); 
     } 

    } 

} 

然後,在文件後面的代碼,我有這樣的:

protected void Page_Load(object sender, EventArgs e) 
{ 

     if (!Page.IsPostBack) 
     { 
       var test = Session["SessionUserPreferences"]; 
     } 
} 

但是當我調試時,測試爲空。是什麼導致了這個問題?另外,如果我在母版頁中放置了一個斷點,當我運行aspx頁面時它不會觸發;這是正常的嗎?

謝謝。

回答

2

首先,您缺少UserPreferences.GetUserPreferencesFromDB(6)到Session對象的賦值部分。 (我讀@格雷格的答案的評論和你提到,即使它不工作。)

其次,母版頁的Page_Load事件是當前頁面的Page_Load事件觸發後,會話[的,因此值」 SessionUserPreferences「]在當前頁面頁面加載事件中爲空,因爲它尚未設置。

檢查此鏈接以獲取更多信息的頁面事件:

http://msdn.microsoft.com/en-us/library/dct97kc3.aspx

0

在嘗試檢索該文件之前,您必須在某處執行Session["SessionUserPreferences"] = something;。你把它放在別的地方嗎?

+0

那不是他的Page_Load方法`SessionUserPreferences = UserPreferences.GetUserPreferencesFromDB(6);`? ;但你可能是對的,它看起來不正確。 – VoodooChild 2011-01-30 01:56:08

+0

好吧,我改變了母版頁(我的問題的頂部)的行到會話[「SessionUserPreferences」] = UserPreferences.GetUserPreferencesFromDB(6);但是在我調試後面的代碼中,我仍然將變量測試變爲null。 – frenchie 2011-01-30 01:57:56