注销按钮在ASP.NET中无法正常工作

时间:2013-04-03 11:24:58

标签: asp.net events button logout

我的注销按钮的代码如下所示:

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事件中刷新页面,但我不确定点击一次按钮后是否加载页面两次是否正常。没有其他方法可以解决这个问题吗? 感谢。

2 个答案:

答案 0 :(得分:2)

问题是页面生命周期以特定方式执行。从基本的角度来看:

  • 的Page_Load
  • 活动开火
  • Pre_Render

可以找到更多详细信息 - 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();
    }