Я фанат использования метода расширения для этой задачи:
public static List<SelectListItem> ToSelectList<T>( this IEnumerable<T> enumerable, Func<T, string> value, Func<T, string> text, string defaultOption)
{
var items = enumerable.Select(f => new SelectListItem()
{
Text = text(f) ,
Value = value(f)
}).ToList();
if (!string.IsNullOrEmpty(defaultOption))
{
items.Insert(0, new SelectListItem()
{
Text = defaultOption,
Value = "-1"
});
}
return items;
}
В вашем контроллере вы выбираете данные, которые вы не хотите представлять как элементы внутри выпадающего меню.Обратите внимание, что в этом примере я выбираю города из базы данных:
SomeModel.City =
(from l in _locationRepository.GetAll() select new { l.Area.AreaDescription })
.Distinct()
.ToSelectList(x => x.AreaDescription, x => x.AreaDescription, "All");
И фактический выпадающий список в представлении:
@Html.DropDownList("City", Model.City)