Не могу нажать OnError, что бы я ни делал - PullRequest
1 голос
/ 21 февраля 2012

решено, см. Ниже

в моем контроллере ...

 [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"
    }))
    ...

Inмой .js ...

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

решено

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

Чтобы справиться с этим, нужно установить Response.StatusCode = 500 и добавить заголовок кобъект моего ответа Response.AppendHeader ("MyResponseHeader", "Мое сообщение");

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

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

1 Ответ

2 голосов
/ 21 февраля 2012

Я собираюсь предположить, что здесь у вас есть пользовательская страница ошибок, перенаправляющая вас на контроллер ошибок. Это может быть не так, но сначала проверьте - загрузите скрипач и запустите запрос в браузере в / Revision / Reject и посмотрите, равен ли код ответа 500.

...