2010-02-26 4 views
6

У меня есть приложение ASP.NET MVC с большим количеством выпадающих списков и списков с несколькими выборами. По сути, много списков опций.ASP.NET MVC Model vs ViewData для выбора списков

Мой вопрос: лучше ли передавать эти списки в представление как часть Модели или как ViewData?

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

Есть ли здесь лучшая практика? Даже оценки плюсов и минусов для любого из них были бы оценены.

ответ

6

Я рекомендую вам использовать ViewModels для передачи этих данных. Это ошибка, склонная использовать ViewData с «магическими строками», и я предпочитаю использовать intellisense вместо того, чтобы пытаться запомнить «магические строки». И вам не нужно создавать эти списки выбора в контроллере. Просто используйте IEnumerable и используйте метод расширения ToSelectList из MvcContrib в представлении.

+1

+1 Как правило, мы сделали все возможное, чтобы удалить магические строки. Не только для того, что вы упомянули, потому что intellisense фантастичен, но настоящий кикер - это то, что магические струны всегда компилируются хорошо. Тогда у них есть возможность взорваться во время работы. Ouch ... Сильно напечатанные вещи взрываются во время компиляции, что значительно облегчает обнаружение ошибок. –

-1

Я использую ViewData, если у меня есть только один элемент, который я передаю в представление. Итак, если вы отправляете несколько объектов и вам нужно заполнить несколько выпадающих меню, я бы создал модель представления. Я бы также создал эту модель представления в проекте веб-приложений, поэтому, если ваша модель представления имеет объекты SelectList, вам не нужна ссылка на dll MVC в вашей модели домена.

+0

И это хорошо? – Lankymart