Где и как проверить и отобразить ViewModel?

Я пытаюсь изучить Доменный Управляемый Дизайн и недавно считать, что много людей рекомендует создавать ViewModels для Ваших представлений, которые хранят все значения, которые Вы хотите отобразить в высказанном мнении.

Мой вопрос состоит в том, как я должен сделать проверку формы? я должен создать отдельные классы проверки для каждого представления или собрать в группу их? Я также смущен на том, на что это было бы похоже в коде.

Это - то, как я в настоящее время думаю, проверка и viewmodels вписываются в схему вещей:

Представление (некоторый ввод данных пользователем)-> Контроллер-> FormValidation (ViewModel)-> (Если действительная карта к ViewModel к Модели предметной области)-> Доменный Сервис Слоя-> Инфраструктура

Спасибо!

P.S. Я использую Asp.net MVC с C#

6
задан chobo 7 May 2010 в 05:54
поделиться

4 ответа

Я экспериментировал с размещением валидации формы в ViewModel, а для сложной бизнес-валидации я использую сервисный слой.

На самом деле это работает очень хорошо, и код намного легче читать и поддерживать

.
0
ответ дан 18 December 2019 в 04:49
поделиться

Я предлагаю вам поместить свои правила проверки в модель предметной области. Это самый простой и повторяющийся способ (например, используйте System.ComponentModel.DataAnnotations - связыватель модели по умолчанию MVC 2 поддерживает его из коробки).
Если у вас сложная и обширная модель предметной области, и вы не будете зацикливаться на свойствах сопоставления с одинаковыми именами - попробуйте использовать AutoMapper, отличный инструмент для выполнения такой работы.

0
ответ дан 18 December 2019 в 04:49
поделиться

Проверка модели представления на презентационном слое. Имейте в виду, что вы должны проверять только валидацию, связанную с представлением (дата в правильном формате, имя != "" и т.д.).

Asp.net Mvc имеет некоторую встроенную поддержку валидации, которой обычно достаточно для базовой валидации.

Сложной частью при применении проектирования, ориентированного на домен, является проверка домена. Там могут быть сложные правила, зависимости от репозиториев и тому подобные вещи, которые могут сделать "выполнение валидации", не делая модель домена тупой, довольно трудным.

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


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

0
ответ дан 18 December 2019 в 04:49
поделиться

Это распространенный вопрос, и на него не всегда есть один правильный ответ. Посмотрите этот пост Дерика Бейли. Это хорошее обсуждение этого вопроса, и есть несколько ссылок на другие замечательные сообщения по этому вопросу.

0
ответ дан 18 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: