2

ユーザーがメールを送信できるフォームがページにあり、

        try
        {
            smtpClient.Send(message);

            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Key", 
                "alert('Thank you for your submission.');", true);
        }
        catch(Exception)
        {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Key", 
                "alert('There was an error processing your request.');", true);
        }

        Response.Redirect("home.aspx");

Response.Redirect をコメントアウトしない限り、アラートは表示されず、ページはただちにリダイレクトされるだけで、アラートは機能します。アラートを表示してからリダイレクトしたい。

これはどのように達成できますか?どうにかしてタイマーを使用することを考えましたが、それが最善の解決策かどうかはわかりません。

ありがとう。

4

2 に答える 2

6

Response.Redirect を使用する代わりに、JS にリダイレクトさせます。

例えば。

alert('....'); window.location='home.aspx';
于 2011-08-16T00:36:08.117 に答える
2

その理由は、RegisterClientScriptBlock呼び出しとリダイレクトコードが同じページライフサイクル内にあるためです。つまり、Response.Redirect()は、ページがクライアントのブラウザにレンダリングされる前に呼び出されます。クライアントにはアラートメッセージを表示する方法がありません。

解決策は、ウィルが提案したようにJSを使用してページをリダイレクトすることです

于 2011-08-16T01:49:13.287 に答える