2011-04-23 34 views
0

我在ASP.NET中有一个网站。我在页面加载中声明一个会话来存储用户ID,默认情况下它将为空。Session and Page.IsPostBack

当用户点击登录时,登录页面出现,用户登录并且用户ID存储在会话中。

当我回到索引页时,它消失了。

这里是我的代码:

if (!Page.IsPostBack) 
{ 
    Session["UserID"] = ""; 
} 

if (Session["UserID"] == "") 
{ 
    HP_User.Text = "New User"; 
    HP_Login.Text = "login"; 
} 
else 
{ 
    HP_User.Text = "welcome ." + Session["UserID"].ToString() ; 
    HP_Out.Visible = true; 
    HP_Login.Visible = false; 
} 

回答

0

由于您的登录页面是由你所谈论的,它不会被认为是当在用户直接返回到您的网页投递的页面单独页面登录。因此,每当用户访问此页面时,他们的Session["UserID"]将被重新设置为""。尽量只:

if (!String.IsNullOrEmpty(Session["UserID"])) 
{ 
    HP_User.Text = "New User"; 
    HP_Login.Text = "login"; 
} 
else 
{ 
    HP_User.Text = "welcome ." + Session["UserID"].ToString() ; 
    HP_Out.Visible = true; 
    HP_Login.Visible = false; 
} 
0

试试这个:

if (!Page.IsPostBack) 
{ 
    Session["UserID"] = ""; 

if (Session["UserID"] == "") 
{ 
    HP_User.Text = "New User"; 
    HP_Login.Text = "login"; 
} 
else 
{ 
    HP_User.Text = "welcome ." + Session["UserID"].ToString() ; 
    HP_Out.Visible = true; 
    HP_Login.Visible = false; 
} 
} 

问候

0

不知道如果你仍然需要这个或没有,但它会帮助不只是检查会议是空的或不是,即

if (!Page.IsPostBack) 
{  
if (String.IsNullOrEmpty(Session["UserID"])) 
{ 
Session["UserID"] = ""; 
} 
}