ASP.NET Session[] 参数在 page_load() 中不起作用

ASP.NET Session[] parameter doesn't work from page_load()

我正在制作一个不错的 ASP.NET 网站,我在其中保存用户登录时会话的详细信息,如下所示:

 protected void Login_Click(object sender, EventArgs e)
 {
     //If details at the user/password textboxes are legit:
   Session["User"] = new User(LoginUserTB.Text, LoginPassTB.Text, null,  Class.UNDEF);
}

它工作得很好,例如,我有一个名为 Welcome 标签的标签,如果用户保存在会话中,它应该会更改为包含用户名的问候语。我是这样编程的,效果很好。

页面加载:

 if(Session["User"]!=null)
  WelcomeTag.Text = "Welcome, " + ((User)Session["User"]).Username + ".";

但是,由于某种原因,它无法在其中一个标签上正常工作。这是一个名为 StatusDesc 的母版页标签,应该包括服务器上的日期和用户名(如果有的话)。在页面上,我有以下代码:

if (Session["User"] != null)
{
  ((Label)Master.FindControl("StatusDesc")).Text = "Currently logged to: " +  ((User)Session["User"]).Username + ".<br>" + ((Label)Master.FindControl("StatusDesc")).Text;
}

它以前工作过,我对母版页组件名称很确定 - 同时我没有更改它;但是,现在,即使我已登录,它也不会显示用户名行 - 只会显示日期行,即使会话中没有用户也会显示。

知道为什么会发生这样的事情吗?如果您需要我提供代码的其他部分,请询问。

非常感谢您!

您需要了解按顺序触发的事件,以便设置要控制的值

http://msdn.microsoft.com/en-us/library/dct97kc3%28v=vs.140%29.aspx

图片来自 MSDN (http://i.msdn.microsoft.com/dynimg/IC386473.png)

(图片来自CodeProject)