Предполагается, что у вас есть Roles
класс в источнике данных, подобный этому:
public class Roles
{
public int RoleId { get; set; }
public string RoleName { get; set; }
}
Если вы хотите получить выбранное значение из IEnumerable<SelectListItem>
, выполните следующие шаги:
1) Создайте дополнительное свойство, которое будет содержать выбранное значение в viewmodel.
public class AdminViewModel
{
public int SelectedRoleId { get; set; }
public IEnumerable<SelectListItem> Roles { get; set; }
}
2) Привязать список опций к IEnumerable<SelectListItem>
свойству следующим образом:
public ActionResult AddAdmin()
{
DataAccessLayer.DoloContext col = new DataAccessLayer.DoloContext();
var viewMod = new AdminViewModel();
List<Roles> list = col.Roles.ToList();
viewMod.Roles = list.Select(x => new SelectListItem {
Text = x.RoleName,
Value = x.RoleId
}).ToList();
return View(viewMod);
}
3) Наконец, привязать выбранноеЗначение свойства и список опций для DropDownListFor
помощник, также не нужно конвертировать Roles
список опций в SelectList
, потому что Roles
уже имеет тип IEnumerable<SelectListItem>
:
@Html.DropDownListFor(model => model.SelectedRoleId, Model.Roles, "Choose")