Member 8741848 Ответов: 1

.сетчатый сердечник тонкий и MVC контроллеры - пласт сервис


Я пытаюсь проредить свои контроллеры, используя слой обслуживания. Но я не могу тренироваться или найти пример того, как справляться с проблемами, возникающими на уровне сервиса.

В качестве примера у меня есть действие контроллера Add Item, которое имеет имя и определенный пользователем идентификатор.

Код должен быть уникальным в базе данных.

Так что мой контроллер просто берет ViewModel и передает его в службе элементов.Добавить()
Внутри Add есть логика, чтобы проверить, существует ли идентификатор. Если это не так, контроллер должен отправить эту информацию обратно пользователю и заставить его изменить свой ввод.

Итак, как я могу отправить эту информацию обратно на контроллер, чтобы сохранить сообщение об ошибке и отобразить правильное представление?

Есть ли стандартный способ сделать это, почти каждый пример, который я могу найти, показывает, как взять логику из контроллера службы, но не как вернуть ошибки / исключения обратно.

Что я уже пробовал:

Я пробовал вещи, используя параметры out, но это очень "халтурно".
И специальные коды возврата, но это не будет поддерживаться по мере роста системы.

1 Ответов

Рейтинг:
0

F-ES Sitecore

Обычно это делается с помощью возвращаемых типов. Либо возвращать false из метода Add если он не будет работать и показывать стандартное сообщение для пользователя, или возвращение перечисление со значениями, как "удалось", "DuplicateID", "InvalidData" и т. д., Чтобы указать конкретную причину ошибки и контроллер будет тогда показать сообщение для пользователя, основываясь на этом.