2010-05-07 3 views
6

Я пытаюсь изучить Domain Driven Design и недавно прочитал, что многие люди выступают за создание ViewModels для ваших представлений, которые хранят все значения, которые вы хотите отобразить в данном представлении.Где и как проверять и отображать ViewModel?

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

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

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

Спасибо!

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

ответ

0

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

Это на самом деле работает из реальной хорошо и код намного проще читать и поддерживать

0

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

0

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

Asp.net Mvc имеет некоторые in-built validation support, которых обычно достаточно для базовой проверки.

Трудная часть при применении домена, управляемого дизайн, является проверкой домена. Там могут быть сложные правила, зависимости от репозиториев и аналогичных материалов, которые могут сделать «проверку правильности», не делая domain model dumb довольно сложно.

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


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

0

Это общий вопрос, и это тот, который не всегда есть один правильный ответ. Отъезд this post от Derick Bailey. Это хорошая дискуссия по этому вопросу и имеет несколько ссылок на некоторые другие замечательные сообщения по этому вопросу.

Смежные вопросы