Строго типизированная модель представления, не использующая динамические элементы, такие как ViewBag
Вы можете добавить новое свойство в свою модель представления для опций SELECT типа IEnumrable<SelectListItem>
.
модель представления - это простой класс POCO, используемый для передачи данных между методом представления и действия и наоборот. Они специфичны для представлений. Добавьте свойства, необходимые только для представления.
public class CreateUserVm
{
public IEnumrable<SelectListItem> Labs { set;get;}
public int SelectedLabId { set;get;}
//Add other properties as needed for the view
}
и в вашем действии GET создайте объект этой модели представления, загрузите свойство Labs и отправьте его в представление.
public ActionResult Create()
{
var vm= new CreateUserVm();
// Hard coded for demo. You can replace with real data from db
vm.Labs = new List<SelectListItem> {
new SelectListItem { Value="1", Text="One" },
new SelectListItem { Value ="2", Text="Two" }
};
return View(vm);
}
и в представлении, которое строго типизировано для этой модели представления, вызовите вспомогательный метод DropDownListFor
@model CreateUserVm
@Html.DropDownListFor(f=>f.SelectedLabId, Model.Labs,"Select one")
Предварительный выбор варианта в раскрывающемся списке
Если вы хотите предварительно выбрать один вариант, когда razor отображает страницу, вы можете установить для свойства SelectedLabId
вашей модели представления значение свойства value
элемента Option (SelectListItem).
public ActionResult Create()
{
var vm= new CreateUserVm();
// Hard coded for demo. You can replace with real data from db
vm.Labs = new List<SelectListItem> {
new SelectListItem { Value="1", Text="SugarLab" },
new SelectListItem { Value ="2", Text="CandyLab" },
new SelectListItem { Value ="3", Text="SodaLab" }
};
vm.SelectedLabId = 2; // Will set "CandyLab" option as selected
return View(vm);
}
Если вы хотите использовать реальные данные вместо жестко закодированных двух элементов, вы можете сделать это
vm.Labs = dbContext.Labs.Select(x=>new SelectListItem { Value=x.Id.ToString(),
Text= x.Name }).ToList();
Предположим, что dbContext
- это ваш объект класса DbContext и у него есть свойство Labs
типа DbSet<Lab>
, где каждая сущность Lab имеет свойство Id и Name.
person
Shyju
schedule
17.09.2016
ViewBag
- это просто контейнер - передавайте все необходимые данные в виде строго типизированного@model
- person Jasen   schedule 17.09.2016