【问题标题】:Can't hit OnError no matter what I do无论我做什么都无法点击 OnError
【发布时间】:2012-03-11 23:24:38
【问题描述】:

已解决,见下文

在我的控制器中...

 [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 中开启了 customerrors... 即使在 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"
}

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 酷 - 关于解决方案 - 这就是我对自定义错误页面的意思(打开自定义错误):)
    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2019-10-22
    • 2019-10-19
    • 1970-01-01
    • 2020-08-18
    相关资源
    最近更新 更多