2013-05-22 3 views
1

У меня есть список, какКакой способ лучше всего заполнить Dropdownlist в MVC?

IEnumerable<SelectListItem> Users; 

Я могу заполнить детали пользователей в меню списка на 3 пути

1-Use ViewModel

Public class myViewModel 
{ 
    IEnumerable<SelectListItem> UserList; 
} 

и заполнить его как

viewmodel.UserList=GetUsers(); 

2-Использование от ViewBag

ViewBag.UserList=GetUsers(); 

3-Использование из ViewData

ViewData["Users"]=GetUsers(); 

Что разница между путями моих и которые один лучше

+2

Технической разницы нет. Существует только разница в использовании. Сильно-типизированное использование (ваш первый экзамен.) Лучше проверять типы переменных во время компиляции ... –

ответ

3

Там в четвертый путь, который я думаю, что это лучший способ пойти. Поскольку у вас есть только один объект (типа IEnumerable<SelectListItem>), вы можете просто передать его вашему представлению в качестве модели (нет необходимости в промежуточной ViewModel).

С точки зрения возможностей, нет никакой реальной разницы. Разница в том, что ваш первый метод и метод, который я только что описал, строго типизированы, что означает, что вы получаете Intellisense и проверку времени компиляции, тогда как ваш второй и третий методы слабо типизированы, и вы не получаете intellisense и не проверяете время компиляции.

1

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

Смежные вопросы