1

最初にアラートボックスを表示してからログアウトする方法

if (machineID.Count != 0)
            {

                checkMachineGrpState(machineID);
        else
                {
                    Response.Write("<script>alert('You are being logged out')</script>");

                   GoSignOut();
                }
    }

 private void GoSignout()
    {
        FormsAuthentication.SignOut();
        Session.Abandon();
        Response.Redirect("~/Default.aspx");
    }

ここで GosignOut 関数を呼び出さないと、アラート ボックスが表示されますが、サインアウトを呼び出した瞬間にアラート ボックスが表示されず、単にサインアウトします

だから私は最初にアラートボックスを表示できる方法があるかどうかを考えていました.OKを押すと、コードビハインドでサインアウト関数を呼び出す必要があります...ありがとう

4

2 に答える 2

1

Response.write はブラウザーに情報を書き込み、ブラウザーがページをロードすると、そのデータを解析します (html をレンダリングして js を実行します)。ブラウザーが GET または POST (フォーム送信、リンク、ajax) を介してサーバーに接続しない限り、それ以上の通信やフィードバックはサーバー (asp.net Web フォーム コードが実行される場所) に提示されません。

出力をクライアントに送信しているが、すぐに Response.Redirect を呼び出しているため、クライアントは出力を取得できません。代わりに、ただちにリダイレクトして、default.aspx ページを表示します。

あなたができることは、リダイレクトを行うことですが、クライアントにいくつかのデータを渡すことです (クエリ文字列はこれを行う方法です) と、default.aspx ページはそのデータを探すことを認識します。そのデータが見つかった場合、必要なアクションがすべて完了します。あなたの場合、ユーザーに警告する必要があります。

これを行う 1 つの方法は、"~/Default.aspx?alert=1" にリダイレクトすることです。default.aspx では、ページ読み込み時に、クエリ文字列を調べて、値が 1 のアラート キーがあるかどうかを確認します。その場合は、アラートを実行します。

于 2010-03-01T18:33:00.483 に答える
1

このログアウト コードを呼び出すサーバー側ボタンの clientclick を使用し、true を返します。

例えば

<asp:Button id="button1" runat="server" OnClientClick="javascript:alert('You are being logged out');return true;" />

あなたが望むものを編集し直してください。これを試してみてください。session.abandon と Signout の使用についてはテストしていません (ログイン ページが強制的に表示される場合があります)。

if (machineID.Count != 0)
            {

                checkMachineGrpState(machineID);
        else
                {
                   GoSignOut();
                  Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "<script>alert('You are being logged out');window.location.href='" + ResolveUrl("~/Default.aspx") + "';</script>");
                }
    }

 private void GoSignout()
    {
        FormsAuthentication.SignOut();
        Session.Abandon();
    }

ログイン ページ以外のページへのリダイレクトを許可する必要がある場合 (SignOut によって強制される)、以下のようなものを web.config に追加できます。認証されたユーザーがページにアクセスできないため、これを許可するかどうかは100%確信が持てません

<location path="whateverpage.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
于 2010-03-01T15:49:44.803 に答える