Посмотреть модели Asp.Net MVC - PullRequest
       6

Посмотреть модели Asp.Net MVC

1 голос
/ 01 декабря 2009

При использовании MVC и преобразовании ваших данных в ViewModels, что является приемлемым способом сделать это?

В настоящее время я использую AutoMapper, чтобы сделать это, и он работает хорошо. Однако я видел в статье в блоге (я думаю, это был Роб С) конструктор ViewModel, который принимает количество необходимых параметров и затем генерирует ViewModel

Например var RetViewModel = new ViewModel(MyObject);

Это похоже на приличный способ сделать это, мысли?

Ответы [ 2 ]

3 голосов
/ 02 декабря 2009

«Принятый путь», как правило, лучше всего подходит для вас.

Я никогда не слышал об AutoMapper, и когда я посмотрел на него, я понял, что он создает отображение магических объектов, следуя определенному соглашению.

Скринкаст по адресу: http://www.dnrtv.com/default.aspx?showNum=155

Примечание: я смотрел только половину этого скринкаста, поэтому мои мысли по поводу AutoMapper несколько неполны.

Лично я не хочу использовать его, потому что он требует, чтобы я написал дополнительный код для сопоставления / «выравнивания» между свойствами объекта (код, IMO, лучше оставить в логике конструктора). В примере скринкаста этот код обычно помещается в методы действий контроллера, что может привести к вздутию живота. (Мне нравятся узкие контроллеры / действия)

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

Кроме того, я всегда создаю пустой конструктор, который не принимает параметров, чтобы я мог вручную устанавливать значения свойств объекта ViewModel.

Пример:

CustomViewModel myModle = new CustomViewModle
{
    Property1 = "Something",
    Property2 = 3,
    //etc..
};

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

1 голос
/ 01 декабря 2009

Хорошо, «официально рекомендованный» подход заключается в том, чтобы механизм привязки модели справился с этим за вас. Это проще и автоматизирует процесс. Модель должна будет выставить свои свойства для чтения-записи, чтобы связыватель мог ее инициализировать.

Второй вариант, о котором вы говорите, вероятно, выиграет от того, что ваши модели станут неизменяемыми объектами. То есть вы делаете все свойства доступными только для чтения и инициализируете их один раз через параметры конструктора. Это потребует, чтобы вы заглянули в FormCollection напрямую, чтобы извлечь отправленные значения. Это большая работа, но у нее есть свои преимущества, например, один из видов защитного программирования.

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

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