Что добавить в вашу ViewModel
И что вы вкладываете в свой просмотр?
Недавно blog из Скотт Гензельман о использование специального связующего для облегчения тестирования привело меня к мысли о следующем:
Что вы ввели в логику контроллера, построив модель представления, и что должно быть показано в представлении? он делает это:
var viewModel = new DinnerFormViewModel {
Dinner = dinner,
Countries = new SelectList(PhoneValidator.Countries, dinner.Country)
};
return View(viewModel);
Теперь я использую тот же способ передачи данных на мой взгляд, но я не уверен, как он относится к собственности в странах. Вы могли бы утверждать обе стороны:
Объединение списка стран в SelectList подготавливает данные для представления, так же, как вы создаете модель просмотра DTO для передачи ваших данных.
С другой стороны, это как-то кажется, что вы конкретно манипулируете данными, которые будут использоваться в выпадающем списке, ограничивая представление о ваших данных с контроллера.
Я чувствую, что это немного серая область для разделения проблем между представлением и контроллером, и я не могу решить, в какую сторону идти. Есть ли какие-либо рекомендации для этого?
PS: Чтобы это было просто, допустим контекст ASP.NET по умолчанию, поэтому в основном ваш проект из коробки. Двигатель просмотра по умолчанию и весь этот джаз.
Ответы
Ответ 1
В MVC (по крайней мере, этот аромат) одна из обязанностей диспетчера заключается в подготовке данных для представления. Поэтому я считаю, что вполне приемлемо подготовить конкретную модель для потребления мнений, которая подразумевает, что она будет использоваться в раскрывающемся списке. В этом случае контроллер просто упрощает просмотр и на самом деле препятствует тому, чтобы неудобный код был в противном случае просачиваться в представление. Он также не позволяет использовать эти магические строки в ViewData, например VieData [ "Страны" ].
Итак, чтобы подвести итог, хотя может показаться, что в плане ответственности есть какая-то серая область, в конечном итоге это задача контроллера: взаимодействовать с представлением и преобразовывать модель домена в другие модели, которые проще потреблять по виду.
Ответ 2
Некоторые предполагают, что наличие одной всеобъемлющей модели представления для представления идеально (дублируется Принцип Thunderdome).