【问题标题】:ASP.NET MVC OnException and Ajax Form onFailureASP.NET MVC OnException 和 Ajax 表单 onFailure
【发布时间】:2009-08-22 04:21:35
【问题描述】:

我的情况是我在控制器中处理 OnException。根据异常的类型,我想返回一个 javascript 结果。通过提交 ajax 表单调用了引发异常的操作方法。 ajax 表单处理成功事件。在我的 OnException 方法中,我根据我见过的所有示例设置 ExceptionHandled = true。问题是即使引发了异常并且我返回了 JavascriptResult 调用了成功方法并且我返回的 javascript 没有执行。关于为什么会发生这种情况以及如何让 JavascriptResult 执行的任何建议。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    这是事件的顺序:

    1. 浏览器发送了一个 ajax 请求
    2. 服务器上的操作方法开始执行,并引发异常。
    3. 您的 OnException 方法有机会查看异常,并决定设置 ExceptionHandled=true。
    4. 此外,您的 OnException 方法返回了 JavascriptResult
    5. 由于 ExceptionHandled 设置为 true,MVC 将在该点停止异常处理链,并将 JavascriptResult 返回给浏览器,HTTP 结果代码为 200 OK
    6. 浏览器上的ajax代码接收到结果,并解释为表示一切正常;然后它调用 OnComplete,然后调用 OnSuccess。

    您的选择是:

    1. 在从 OnException 返回之前在响应上设置状态代码 500。浏览器将调用 OnComplete,然后调用 OnFailure。

    2. 在 OnComplete 中处理返回值,而不是在 OnSuccess 中,然后返回 false 表示不应调用 OnSuccess。

    【讨论】:

    • 我记得在您回复之前设置了状态码。尽管我的 javascript 结果没有执行,但似乎我还有其他问题。感谢您的帮助。
    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 2010-11-29
    • 2015-03-07
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多