已解决,见下文
在我的控制器......
[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"
}
答案 0 :(得分:2)
我将在这里假设您有一个自定义错误页面,将您重定向到错误控制器。可能不是这种情况,但首先验证 - 加载fiddler并在浏览器中运行请求到/ Revision / Reject,看看响应代码是否为500.