Сильно типизированный модельный подход, который не использует динамический материал как ViewBag
Вы можете добавить новое свойство к вашей модели представления для Выбора параметров типа 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")
Предварительно выбрав опцию в выпадающем списке
Если вам нравится предварительно выберите один вариант, когда бритва отобразит страницу. Вы можете установить значение свойства 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);
}
Если вы хотите использовать реальные данные, вместо жесткого закодированных 2 пунктов, вы можете сделать это
vm.Labs = dbContext.Labs.Select(x=>new SelectListItem { Value=x.Id.ToString(),
Text= x.Name }).ToList();
Предполагая dbContext
ваш DbContext объект класса и имеет Labs
свойство типа DbSet<Lab>
где каждый объект Lab имеет свойство Id и Name.
'ViewBag' - это просто контейнер - передайте любые данные, которые вам нужны, как строго типизированная' @ model' – Jasen