2011-08-16 6 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를 사용하여 페이지를 리디렉션하는 것입니다.

관련 문제