ASP.NET MVC ViewData и просмотр лучших моделей - PullRequest
4 голосов
/ 19 июня 2010

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

Мне нужно отобразить обновление / создать формуляр с текстовыми полями и выпадающим списком.

Должна ли модель представления содержать список для раскрывающегося списка или я должен передать данные для раскрывающегося списка с помощью ViewData?

Когда я должен использовать ViewData, а когда я не должен его использовать?

Должны ли поля ввода, например выпадающие списки, иметь отдельную модель представления?

Ответы [ 5 ]

4 голосов
/ 23 июня 2010

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

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

Я бы поместил как можно больше данных в модель представления, но только в том, что имеет смысл.Для данных, которые не должны входить в модель представления, я бы передавал их как ViewData, но старался бы свести их к минимуму.

Насколько вы сомневаетесь, поля ввода, если они все связаны,для этого создаст ViewModel вместо того, чтобы передавать 5 или 10 фрагментов данных в ViewData, поскольку логическая группировка их в одном месте будет иметь смысл.Это действительно вопрос предпочтений, но я считаю, что этот подход является лучшим для меня.

2 голосов
/ 22 июня 2010

Я нашел здесь кое-что очень интересное ... http://weblogs.asp.net/rashid/archive/2009/11/27/extending-asp-net-mvc-2-templates.aspx

Именно то, что мне нужно.

2 голосов
/ 19 июня 2010

Возможно, вы захотите взглянуть на NerdDinner , в частности на DinnerFormViewModel и список стран на выбор.В основном, они имеют модель Dinner (используется для представления индекса, где им нужна коллекция), а также DinnerFormViewModel, которая содержит один экземпляр Dinner и список SelectList для стран.Представление создания (точно названное DinnerForm), конечно, строго типизировано и принимает DinnerFormViewModel.

2 голосов
/ 19 июня 2010

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

1 голос
/ 19 июня 2010

Вы должны передать список как часть вашей модели.Или, если список довольно распространен (например, список состояний или список Да / Нет), вы можете создать статический список в статическом классе, на который можно ссылаться непосредственно в вашей ViewPage.Я не понимаю, почему вы хотите передать его через ViewData, поскольку вам нужно будет привести свой список в ViewPage.

...