2011-08-16 35 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

讓JS做重定向,而不是使用Response.Redirect。

例如。

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

原因是RegisterClientScriptBlock調用和重定向代碼在同一頁面生命週期內。這意味着Response.Redirect()會在頁面呈現給客戶端瀏覽器之前被調用。客戶端無法看到警報消息。

如Will

建議使用JS重定向頁面的解決方案
相關問題