Использовать ViewData или не использовать ViewData - PullRequest
8 голосов
/ 17 июня 2009

Я читал книгу Professional ASP.NET MVC 1.0, а также читал другие источники, рассказывающие об использовании ViewModel вместо ViewData из ваших контроллеров в Views. Но потом я вижу очень много примеров использования ViewData в сложных сценариях, где нет другого пути, кроме как получить что-то из ViewData. Но затем я прочитал книгу, подобную Pro ASP.NET MVC Framework, и все, о чем он говорит, - это только ViewData, а не ViewModel. Так ViewModel - это совершенно новая концепция или что?

Я вижу, что ViewModel - гораздо лучший подход, но является ли это надежной альтернативой? Я имею в виду, что ViewData так легко доступен для вас в других вещах, таких как объект HtmlHelper, где ViewModel нет. Или, например, использовать его в пользовательском элементе управления (http://www.codeproject.com/KB/custom-controls/MVCCustomControls.aspx).. Итак, могу ли я использовать комбинацию обоих в зависимости от различных целей или что? Что если я по какой-либо причине хочу получить доступ к ViewModel в моем методе Extension? Я не знаю, какой путь выбрать. Я знаю, что ViewData не является строго типизированной, но вы можете настроить свой вид, чтобы указать тип и, следовательно, сделать типизированными свои ViewData, но я просто удивляюсь. Существует так много поддержки ViewData, но я знаю ViewModel это гораздо более абстрактный и отдельный способ работы, как и при наборе текста. Я просто не хочу сокращать себя в сценариях, где мне нужно будет получать определенные данные, такие как ViewData, которые легко доступны из других объектов, таких как класс HtmlHelper.

Мысли? Стандарты? Опыт? Я немного отключен, или вы просто используете комбо и по-прежнему используете ViewData в других обстоятельствах, чем просто отправка данных из вашего контроллера в ваш View или как?

И если вы вообще не используете ViewData и вместо этого используете ViewModel со своими контроллерами, то похоже, что вы используете ViewModel "все или ничего", и поэтому ViewData не имеет никакой цели, поскольку вы не установили его с помощью чего-либо из ваши контроллеры так бесполезны на тот момент ?? Я кого-то путаю или далеко отсюда? Смути меня, черт возьми, это точно.

Ответы [ 2 ]

2 голосов
/ 17 июня 2009

Что ж, ViewData - довольно быстрый способ реализации. Тем не менее, вы делаете много строковых литералов, что обычно не очень хорошо. Вы можете решить это, используя некоторые строковые константы, что я и делаю с переменными Session, но я думаю, что здесь ViewModel - гораздо лучший подход. В любое время вы можете использовать ViewData, вы также можете использовать ViewModel. ViewModel не обязательно должен быть просто вашим доменным объектом; это может быть вспомогательный класс, который имеет не только объект домена, но и некоторые дополнительные свойства, специфичные для вашего представления; вот почему это там. Так что с ViewModel у вас есть компилятор, который помогает вам, и, очевидно, с точки зрения ОО, он намного чище, чем просто передача ключей в словарь.

Я думаю, что MVC здесь предлагает хороший подход. Он предлагает быстрое и грязное (не обязательно плохое) для тех, кому нужно «просто сделать это», и более чистый подход, оба из которых довольно просты в использовании.

Если вы еще не читали учебник Скотта Гурти по ASP.NET MVC; Я настоятельно рекомендую это:

http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx

1 голос
/ 17 июня 2009

Теперь просмотр моделей рассматривается как полезный шаблон программирования. Прочитайте эту статью Стивена Вальтера, например: ASP.NET MVC Совет № 50 - Создание моделей представления

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