Есть ли у ViewModel своя логика? - PullRequest
6 голосов
/ 29 января 2010

При назначении полей ViewModel следует ли передавать доменные объекты непосредственно объектам ViewModel, которые затем будут определять способ представления данных, или другой класс, например, служба, будет присваивать данные из модели в ViewModel?

также:

РЕДАКТИРОВАТЬ: есть ли смысл разделять модель представления на получателя и докладчика? (вместо привязки только определенные поля при обновлении?)

Ответы [ 3 ]

6 голосов
/ 29 января 2010

Обычно действие контроллера берет бизнес-объекты и помещает все, что нужно для модели представления.

Если у вас есть бизнес-объект, содержащий поля Name, Address, Id и View, должен отображаться только Name, тогда ViewModel имеет только поле «Name», и действие контроллера заполняет его. ViewModel не должен ничего знать о ваших бизнес-классах, он должен знать только о том, что ему нужно отображать.

В этом случае основной / единственной логикой является «Показать логику», то есть «если TotalAmount отрицательно, отображать его с помощью CSS Class absoluteNumber».

4 голосов
/ 29 января 2010

Ради SoC, если эта логика относится к View, они могут быть в ViewModel или даже в самом View, но если они относятся к Business или Program, поместите их в Model и Controller соответственно.

3 голосов
/ 29 января 2010

По своему опыту я использовал службы для сопоставления модели с ViewModel. Я не помещаю логику в мои ViewModels.

Кроме того, вероятно, стоит потратить время на AutoMapper , чтобы помочь вам с отображением. Определенно помогает сократить написание повторяющейся логики отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...