无论我做什么,都无法击中OnError

时间:2012-02-21 16:24:04

标签: asp.net-mvc-3 razor asp.net-ajax

已解决,见下文

在我的控制器......

 [HttpPost]
 public ActionResult Reject(RevisionRejectModel model)
 {
    throw new HttpException(500, "Internal Error");
    ...
}

在我看来...

  @using (Ajax.BeginForm("Reject", "Revision", new AjaxOptions
    {
        HttpMethod = "Post",
        OnBegin = "RejectOnBegin",
        OnFailure = "RejectOnFailure",
        OnSuccess = "RejectOnSuccess",
        OnComplete = "RejectOnComplete"
    }))
    ...

在我的.js ......

function RejectOnFailure(ajaxContext) {
   alert("Never hit!");
}

解决

问题是在web.config中打开了客户端错误...... 即使在web.config中打开了客户错误也可以工作......

我处理此问题的方法是设置 Response.StatusCode = 500 并将Header附加到我的响应对象 Response.AppendHeader(“MyResponseHeader”,“My Message”);

在我的.js OnFailure处理程序中......

function OnFailure(ajaxContext) {
    alert(ajaxContext.status); // 500
    alert(ajaxContext.getResponseHeader("MyResponseHeader"));  // "My Message"
}

1 个答案:

答案 0 :(得分:2)

我将在这里假设您有一个自定义错误页面,将您重定向到错误控制器。可能不是这种情况,但首先验证 - 加载fiddler并在浏览器中运行请求到/ Revision / Reject,看看响应代码是否为500.