使用会话变量

问题描述:

在我的母版页,我加载一个变量在会议上是这样的:使用会话变量

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页面时它不会触发;这是正常的吗?

谢谢。

首先,您缺少UserPreferences.GetUserPreferencesFromDB(6)到Session对象的赋值部分。 (我读@格雷格的答案的评论和你提到,即使它不工作。)

其次,母版页的Page_Load事件是当前页面的Page_Load事件触发后,会话[的,因此值” SessionUserPreferences“]在当前页面页面加载事件中为空,因为它尚未设置。

检查此链接以获取更多信息的页面事件:

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

在尝试检索该文件之前,您必须在某处执行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