我有MasterRoot.Master
和LoginPage.aspx
如何在用户成功登录后将Session
的值设置为HeadLoginName
。
Login.aspx.cs
protected void btnLogin_Click(object sender, EventArgs e) {
UserClass user=new UserClass();
user.LoginProcess(txtUserName.Text,txtPass.Text);
if(user.loginsuccess) {
Session["UserName"]=user.username.ToString();
}
}
MasterRoot.Master.cs
protected void Page_Load(object sender, EventArgs e) {
// Like this HeadLoginName.Text=Session["UserName"].ToString();
}
答案 0 :(得分:0)
主页面中的Load()事件在您分配Session [“UserName”]之前执行,因此在用户单击Login后它是空的。您需要使用Response.Redirect重定向到某个页面并“刷新”页面或直接从内容页面分配母版页上的Label值
if(user.loginsuccess) {
Session["UserName"]=user.username.ToString();
// Gets a reference to a Label control that not in a ContentPlaceHolder
Label mpLabel = (Label) Master.FindControl("HeadLoginName");
if(mpLabel != null)
Label1.Text = user.username;
}
详细了解to access Master page from Content page和Events in ASP.NET Master and Content Pages
的方式答案 1 :(得分:0)
如果您只想分配会话值而没有任何异常,您可以在母版页中执行此操作
HeadLoginName.Text=(Session["username"]==null)?"some value you like":Session["username"];
当用户成功登录时,您可以在子页面中这样给出
Session["username"]=usernametxt.Text;
然后该值将在页面回发的主页面中分配;