如何在没有Asp.Net成员资格的情况下将Session的值设置为LoginName

时间:2014-05-24 10:06:37

标签: c# asp.net login-control

我有MasterRoot.MasterLoginPage.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();
} 

2 个答案:

答案 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 pageEvents in ASP.NET Master and Content Pages

的方式

答案 1 :(得分:0)

如果您只想分配会话值而没有任何异常,您可以在母版页中执行此操作

HeadLoginName.Text=(Session["username"]==null)?"some value you like":Session["username"];

当用户成功登录时,您可以在子页面中这样给出

 Session["username"]=usernametxt.Text;

然后该值将在页面回发的主页面中分配;