В настоящее время я передаю свои объекты домена в свои представления и привязываю непосредственно к ним из POST. Все говорят, что это плохо, поэтому я пытаюсь добавить концепцию ViewModel.
Однако я не могу найти способ сделать это очень изящно, и я хотел бы знать, какие решения других людей не должны заканчиваться очень грязным действием контроллера.
типичный процесс для некоторых функций "добавить человека" выглядит следующим образом:
- сделать запрос GET для представления, представляющего пустую модель просмотра Person
- post back (in) действительные данные Контроллер
- связывает опубликованные данные с моделью просмотра человека
- Если сбой привязки, мне нужно выполнить то же действие, что и в (1), но с некоторыми данными, а не с пустым объектом и ошибками.
- Если привязка завершилась, мне нужно отобразить свойства из виртуальной машины на реальную модель
- проверить модель
- если проверка прошла: сохранить человека, зафиксировать, сопоставить данные пользователей с виртуальной машиной отображения и вернуть ее в виде
- Если проверка не выполнена, выполните те же действия, что и в (1), но с некоторыми данными и ошибками
Выполнение всего этого в действии контроллера (игнорирование GET), конечно же, не является SRP или DRY.
Я пытаюсь думать о способе нарушить этот процесс, чтобы он выполнял SRP, является чистым, модульным и, прежде всего, проверяемым.
Каковы решения людей для этого?
Я экспериментировал с пользовательскими обработчиками-action-invokers, чтобы разделить проблемы на отдельные методы, умные модели-строчки и просто грубую силу, но я еще не нашел решения в довольстве.
P.S. поскольку он добавляет столько сложностей, убедить меня, почему мне даже нужно беспокоиться