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