Session和Page.IsPostBack

时间:2011-04-23 15:03:00

标签: c# asp.net session postback

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

当用户点击登录时,会出现登录页面,用户登录,用户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;
}

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
}
}

此致

答案 2 :(得分:0)

不知道你是否仍然需要这个,但只是检查会话是否为空是没有用的,即

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