Как вернуть ошибки для просмотра из контроллера, не привязанного к конкретному свойству модели - PullRequest
1 голос
/ 26 августа 2010

Любопытно, что лучше всего возвращать ошибки в представление из контроллера, где ошибка на самом деле не является ошибкой проверки, а скорее похожа на ошибки типа «пользователь не найден» или «время ожидания службы». (в рамках ASP.NET MVC2)

Я добавляю их в ошибки модели ModelState, но это кажется неуместным. (хотя легко реализовать и поддерживать)

Пример. Пользователь пытается войти в систему, и его учетные данные не соответствуют известному пользователю.

Ответы [ 2 ]

1 голос
/ 26 августа 2010

Полагаю, вам нужно быть немного более ясным в отношении того, что вы называете ошибкой.

Исключения (тайм-аут, ошибка базы данных и т. Д.) Должны обрабатываться с использованием специальных обработчиков исключений (не в последнюю очередь потому, что вы часто не хотите показывать сообщение об ошибке конечному пользователю).

В этом сценарии рассмотрим перегрузку метода OnException() на контроллере. (или все ваши контроллеры наследуются от общей ControllerBase, у которой этот метод переопределен, чтобы избежать повторения)

Вы также можете проверить значение filterContext.HttpContext.IsCustomErrorEnabled при обработке исключений, чтобы определить, следует ли раскрывать подробную информацию об исключениях или скрывать ее.

Помните, что исключения должны быть для исключительных обстоятельств - "нормальная" операция никогда не должна приводить к исключению

Другой тип ошибки, который вы упоминаете, больше похож на «Невозможно обработать запрос из-за бизнес-правил / неверного ввода» (или аналогичный), и в этом случае добавление сообщений об ошибках в ViewModel кажется целесообразным. Они не могут быть прямыми ошибками проверки, но, скорее всего, они являются результатом ввода пользователя

0 голосов
/ 22 июля 2011

Я только что исследовал это, и я думаю, что для связанных с сетью ошибок и т. Д., Которые обязательно произойдут, можно использовать TempData (но не помещайте исключение внутри, а только сообщение об исключении, для соображения безопасности).

http://forums.asp.net/p/1460169/3353779.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...