2012-03-27 55 views
2

突出顯示了兩個選項。 OnSuccess和OnFailure。這些允許我在頁面更新成功或失敗時調用函數。所以,我有一個叫做發送和電子郵件,並具有該代碼的動作......Ajax.BeginForm(new AjaxOptions {})異常

try 
      { 
       // Code to send email 
       return Content("Your message has been successfully!", "text/html"); 
      } 
      catch (Exception ex) 
      { 
       return Content("An error occurred sending your message...", "text/html"); 
      } 

問題是,即使它落入異常仍調用的onSuccess。我想要做的是調用另一個函數,當它陷入異常。我會如何去做這件事?

回答

3

當服務器返回的HTTP狀態碼不是200時,將會調用OnFailure回調函數。在你的例子中,在兩種情況下它都是200.你有這個異常並且吞下它。

所以:

catch (Exception ex) 
{     
    Response.StatusCode = 500; 
    return Content("An error occurred sending your message...", "text/html"); 
} 

然後:

function onFail(result) { 
    alert(result.responseText); 
}; 
+0

看來,當我給它的狀態現在500失敗時,它不會在我的AjaxOptions執行UpdateTargetId,我必須這樣做手動。這隻會激發成功嗎? – 2012-03-27 15:53:36

0

基本上你沒有設置響應的狀態或錯誤消息回到客戶端。此外,我收集您的接收JSON它可能是一個好主意,返回JSON。 也知道IIS可以吞下例外,以便在下面的例子爲@Rob史蒂文森 - 萊格特表示:

Response.TrySkipIisCustomErrors = true 

這是從以前的問題上計算器的例子: How to return correct response on error in ASP.NET MVC 3.0 via JSON?

希望這可以幫助。