У меня есть приложение MVC ASP.NET с довольно многими выпадающими списками и мультисписками выборки. По существу, много списков опций.
Мой вопрос; лучше передать эти списки представлению как часть Модели, или как ViewData?
Я в настоящее время передаю их как ViewData, поскольку мне действительно не нужны они на модели, и они кажутся потенциально большими для того, чтобы раздать на модели (я получаю выбранный пункт или объекты, который является действительно всем, в чем я нуждаюсь). На оборотной стороне, потребности ViewData, набирающие Вид, который не так хорош как модель со строгим контролем типов.
Здесь существует ли лучшая практика? Даже предложения за и против для любого из них ценились бы.
Я рекомендую вам использовать ViewModels для передачи этих данных. Использование ViewData с «волшебными строками» подвержено ошибкам, и я предпочитаю использовать intellisense вместо того, чтобы пытаться запомнить эти «волшебные строки». И вам не нужно создавать эти SelectLists в контроллере. Просто используйте IEnumerable и используйте метод расширения ToSelectList из MvcContrib в представлении.
Я предпочитаю использовать ViewData, если у меня есть только 1 элемент, который я передаю в представление. Итак, если вы отправляете несколько объектов и вам нужно заполнить несколько раскрывающихся списков, я бы создал модель представления. Я бы также создал эту модель представления в проекте веб-приложения, поэтому, если ваша модель представления имеет объекты SelectList, вам не понадобится ссылка на dll MVC в вашей модели домена.