使用会话变量
问题描述:
在我的母版页,我加载一个变量在会议上是这样的:使用会话变量
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“]在当前页面页面加载事件中为空,因为它尚未设置。
检查此链接以获取更多信息的页面事件:
答
在尝试检索该文件之前,您必须在某处执行Session["SessionUserPreferences"] = something;
。你把它放在别的地方吗?
那不是他的Page_Load方法`SessionUserPreferences = UserPreferences.GetUserPreferencesFromDB(6);`? ;但你可能是对的,它看起来不正确。 – VoodooChild 2011-01-30 01:56:08
好吧,我改变了母版页(我的问题的顶部)的行到会话[“SessionUserPreferences”] = UserPreferences.GetUserPreferencesFromDB(6);但是在我调试后面的代码中,我仍然将变量测试变为null。 – frenchie 2011-01-30 01:57:56