Передача ViewData против создания нового класса - PullRequest
0 голосов
/ 13 июля 2009

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

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

Я вижу людей, которые защищают одно или другое по разным причинам, и мне было интересно, есть ли какое-либо правило относительно того, когда использовать одно над другим?

Ответы [ 2 ]

8 голосов
/ 13 июля 2009

Однажды я пошел с напечатанным ViewDataModels. У меня никогда не было необходимости помещать вещи в словарь ViewData и работать с волшебными строками в View. Волшебные струны кажутся грязными и очень подвержены ошибкам.

Что я обычно делаю, это создаю класс ViewDataModel для всех моих контроллеров, то есть:

  • HomeController
  • HomeModel
  • HomeViewDataModel
  • Home ActionResult Просмотр страниц.

Все эти * ViewDataModel расширяют общий класс ViewDataModel, полезный для передачи глобальных данных конфигурации сайта в представления.

Мне все равно, что я положил в эту ViewDataModel. Если мне это нужно, я делаю его свойством и заполняю его всякий раз, когда это необходимо, будь то какой-то класс LINQ to SQL или произвольный класс конфигурации меню.

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

Я часто думаю о ASP.NET MVC как о ASP.NET MVVM как о классах транспортера ViewDataModel, которые транспортируют модель и ненужные (?) Данные в представление, играют огромную роль.

0 голосов
/ 13 июля 2009

Я не уверен, что это действительно хорошая практика - создавать объекты ViewModel, когда нет ничего, кроме возвращаемой модели. Он просто создает больше объектов для сбора мусора для сервера. Я думаю, что это хорошо использовать ViewModel, но только тогда, когда вам это нужно. Но я согласен с тем, что нужно избегать волшебных струн. Это создает более слабый код, который потом сложнее поддерживать.

...