2009-07-13 4 views
0

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

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

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

ответ

8

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

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

  • HomeController
  • HomeModel
  • HomeViewDataModel
  • Главная ActionResult Просмотр страниц.

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

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

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

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

0

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

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

  • Нет связанных вопросов^_^