Модель ASP.NET MVC против ViewData для избранных списков

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

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

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

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

2 ответа

Решение

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

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

Другие вопросы по тегам