0

私のログアウトボタンのコードは次のようになります。

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 イベントが最初に実行されるということです (sic!)。それが、ButtonLogout がクリック後に非表示にならなかった理由です。ButtonClick イベントでページを更新するだけで済みますが、ボタンを 1 回クリックした後にページを 2 回読み込んでも問題ないかどうかはわかりません。これを解決する他の方法はありませんか?ありがとう。

4

2 に答える 2

0

それを処理するには、asp.net LoginStatus を使用することをお勧めします。また、ユーザーがログアウトするときにセッションをクリアすることを忘れないでください。LoginName および LoginStatus コントロールを使用して確認すると役立ちます。

protected void HeadLoginStatus_LoggingOut(object sender, LoginCancelEventArgs e)
    {
        Session.Clear();//It clears the session when the user logged out.
        Session.Abandon();
        FormsAuthentication.SignOut();
    }
于 2013-04-03T11:42:30.277 に答える