【问题标题】:Session and Page.IsPostBack会话和页面.IsPostBack
【发布时间】:2011-04-23 15:03:00
【问题描述】:
我在 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;
}
【问题讨论】:
标签:
c#
asp.net
session
postback
【解决方案1】:
由于您的登录页面是与您正在谈论的页面不同的页面,因此当用户在登录后被引导回您的页面时,它不会被视为回发。因此,每次您的用户访问此页面时,他们的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;
}
【解决方案2】:
试试这个:
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】:
不知道您是否仍然需要这个,但仅检查 Session 是否为空是否无济于事,即
if (!Page.IsPostBack)
{
if (String.IsNullOrEmpty(Session["UserID"]))
{
Session["UserID"] = "";
}
}