2011-08-16 7 views
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をコメントアウトしない限り、アラートは機能します。アラートを表示してリダイレクトしたい

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

ありがとうございました。

答えて

6

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

例えば、

alert('....'); window.location='home.aspx'; 
2

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

解決策は、JSを使用して、次のようにページをリダイレクトします。

関連する問題