我的注销按钮的代码如下所示:
protected void ButtonLogout_Click(object sender, EventArgs e)
{
Session["login"] = null;
}
我的网页onLoad事件如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if ((string)Session["login"] != null)
{
ButtonLogout.Visible = true;
// (...)
}
else
{
ButtonLogout.Visible = false;
// (...)
}
}
我遇到问题这个东西正常工作。我不知道发生了什么,所以我在ButtonClick和PageLoad事件中设置了断点。我发现的是PageLoad事件首先执行(原文如此!),这就是为什么ButtonLogout在点击后没有隐藏的原因。我可以简单地在ButtonClick事件中刷新页面,但我不确定点击一次按钮后是否加载页面两次是否正常。没有其他方法可以解决这个问题吗? 感谢。
答案 0 :(得分:2)
问题是页面生命周期以特定方式执行。从基本的角度来看:
可以找到更多详细信息 - http://msdn.microsoft.com/en-us/library/ms178472.ASPx
如果您正在设置控件的可见性,则可以在Pre_Render页面事件中设置此项,此时按钮事件将被触发并设置您需要的内容。
答案 1 :(得分:0)
我建议你使用asp.net LoginStatus来处理它。并且不要忘记在用户注销时清除会话。检查Using LoginName and LoginStatus Controls会对您有所帮助。
protected void HeadLoginStatus_LoggingOut(object sender, LoginCancelEventArgs e)
{
Session.Clear();//It clears the session when the user logged out.
Session.Abandon();
FormsAuthentication.SignOut();
}