Ajax.BeginForm(new AjaxOptions {})异常

时间:2012-03-27 05:07:49

标签: jquery ajax asp.net-mvc exception-handling

有两个选择。 OnSuccess和OnFailure。这些允许我在页面更新成功或失败时调用函数。所以,我有一个叫做发送和发送电子邮件的动作,并且有这个代码...

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");
            }

问题是,即使它属于Exception,它仍然会调用OnSuccess。我想要做的是当它落入异常时调用另一个函数。我该怎么做呢?

2 个答案:

答案 0 :(得分: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);
};

答案 1 :(得分:0)

基本上您没有将响应状态或错误消息设置回客户端。另外,我收集你的接收JSON,这可能是一个回归JSON的好主意。 另请注意,IIS可以吞下异常,如下例所示,@ Steve Stevenson-Leggett表示:

Response.TrySkipIisCustomErrors = true

以下是上一个问题的stackoverflow示例: How to return correct response on error in ASP.NET MVC 3.0 via JSON?

希望这会有所帮助。