Как обрабатывать исключения, возникающие в контроллере, когда jquery ajax вызывает действие?
Например, мне нужен глобальный код javascript, который запускается при любом виде исключения сервера во время вызова ajax, который отображает сообщение об исключении в режиме отладки или просто обычное сообщение об ошибке.
На стороне клиента я вызову функцию при ошибке ajax.
На стороне сервера: нужно ли мне писать настраиваемый фильтр действий?
asp.net-mvc
jquery
asp.net-mvc-3
Шон Маклин
источник
источник
Ответы:
Если сервер отправляет код состояния, отличный от 200, выполняется обратный вызов ошибки:
а для регистрации глобального обработчика ошибок вы можете использовать
$.ajaxSetup()
метод:Другой способ - использовать JSON. Таким образом, вы можете написать настраиваемый фильтр действий на сервере, который перехватывает исключение и преобразует их в ответ JSON:
а затем украсьте действие вашего контроллера этим атрибутом:
и, наконец, вызовите его:
источник
error
обратный вызов будет выполнен.После поиска в Google я пишу простую обработку исключений на основе фильтра действий MVC:
и напишите в global.ascx:
а затем напишите этот сценарий на макете или главной странице:
Наконец, вы должны включить настраиваемую ошибку. а потом наслаждайся :)
источник
К сожалению, ни один из ответов мне не подходит. На удивление решение намного проще. Возврат из контроллера:
И обрабатывайте это как стандартную ошибку HTTP на клиенте, как хотите.
источник
int
. Кроме того, когда я это делаю, результат передаетсяajax
success
обработчику, а неerror
обработчику. Это ожидаемое поведение?Я принял быстрое решение, потому что у меня не было времени, и оно сработало. Хотя я думаю, что лучшим вариантом является использование фильтра исключений, возможно, мое решение может помочь в случае, если требуется простое решение.
Я сделал следующее. В методе контроллера я вернул JsonResult со свойством «Success» внутри Data:
Позже в вызове ajax я просто попросил это свойство знать, есть ли у меня исключение:
Надеюсь это поможет. Счастливый код! :П
источник
В соответствии с ответом Алехо, вот полный пример. Он работает как шарм и очень прост.
Код контроллера
Код Javascript в представлении
Надеюсь, это поможет кому-то другому!
источник
Для обработки ошибок из вызовов ajax на стороне клиента вы назначаете функцию
error
опции вызова ajax.Чтобы установить глобальное значение по умолчанию, вы можете использовать описанную здесь функцию: http://api.jquery.com/jQuery.ajaxSetup .
источник