Ajax.BeginForm OnFailure никогда не вызывается - PullRequest
1 голос
/ 23 февраля 2012

Я использую Ajax.BeginForm в своем View и предоставляю обработчик OnFailure в моем .js, но он никогда не вызывается. Я попытался выдать исключение (выбросить новое исключение HttpException (500, «Внутренняя ошибка»)) в моем контроллере, и оно никогда не вызывается. Причина, по-видимому, заключается в том, что в web.config включены ошибки пользователей. Я хочу обработать все исключения или ошибки в моем контроллере и передать их мой обработчик OnFailure в моем файле .js, как если бы клиентские ошибки были отключены. Есть ли способ сделать это?

РЕШИТЬ:

Работает даже при клиентских ошибках, включенных в web.config ...

То, как я это делаю, это установить Response.StatusCode = 500 и добавить заголовок к моему объекту ответа Response.AppendHeader ("MyResponseHeader", "My Message");

В моем обработчике .js OnFailure ...

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