Asp.net mvc 5 从数据库实体MVC5创建下拉列表
我想根据db实体的内容创建一个下拉列表。 这似乎是一个足够简单的概念,但我似乎不能真正确定下来 这是我的密码: 模型 控制器Asp.net mvc 5 从数据库实体MVC5创建下拉列表,asp.net-mvc-5,dropdownbox,Asp.net Mvc 5,Dropdownbox,我想根据db实体的内容创建一个下拉列表。 这似乎是一个足够简单的概念,但我似乎不能真正确定下来 这是我的密码: 模型 控制器 public ActionResult Index() { // HAVE TRIED THESE THREE // #1 var EscQry = from d in db.Escuelas select d.Nombre; var escuelas = new SelectList(EscQry, "ID"
public ActionResult Index()
{
// HAVE TRIED THESE THREE
// #1
var EscQry = from d in db.Escuelas
select d.Nombre;
var escuelas = new SelectList(EscQry, "ID", "Nombre");
ViewData["esc"] = escuelas;
// #2
var escuelas = new SelectList(from d in db.Escuelas
select new SelectListItem { Text = d.Nombre, Value = d.ID.ToString() });
ViewData["esc"] = escuelas;
// #3
IEnumerable<Escuela> model = from p in db.Escuelas
select new Escuela { Nombre = p.Nombre };
// #1
return View();
// #2
return View();
// #3
return View(model);
}
看法
我得到这个错误
没有“IEnumerable”类型的ViewData项具有键“Escuelas”
我将根据需要在视图中显示的属性,创建域类的视图模型
public class EscuelaViewModel
{
public int ID { get; set; }
public string Nombre { get; set; }
public int PuestoID { get; set; }
.............. etc.
public Collection<SelectListItem> Escuelas {get; set;}
private static Collection<SelectListItem> CreateEscuelasOptions(string selectedOption == "")
{
var model = from p in db.Escuelas select new Escuela { Number = p.Nombre, Id= p.Id };
var options = new Collection<SelectListItem>();
foreach(var esc in model)
options.Add(new SelectListItem {Value = esc.Id, Text = esc.Number, Selected = selectedOption.Equals(esc.Number)});
return options;
}
public void LoadViewData()
{
Escuelas = CreateEscuelasOptions(Nombre);
}
}
以及以下观点:
@model EscuelaViewModel
@{
ViewBag.Title = "Home Page";
}
@Html.DropDownListFor(x => x.Nombre, Model.Escuelas, --Select option--)
该错误表示ViewData[esc]为空。调试代码。在任何情况下,TypeOfEscuela似乎不包含名为Escuelas的属性,因此不确定要绑定到什么。
public class EscuelaViewModel
{
public int ID { get; set; }
public string Nombre { get; set; }
public int PuestoID { get; set; }
.............. etc.
public Collection<SelectListItem> Escuelas {get; set;}
private static Collection<SelectListItem> CreateEscuelasOptions(string selectedOption == "")
{
var model = from p in db.Escuelas select new Escuela { Number = p.Nombre, Id= p.Id };
var options = new Collection<SelectListItem>();
foreach(var esc in model)
options.Add(new SelectListItem {Value = esc.Id, Text = esc.Number, Selected = selectedOption.Equals(esc.Number)});
return options;
}
public void LoadViewData()
{
Escuelas = CreateEscuelasOptions(Nombre);
}
}
public ActionResult Index()
{
var EscuelaViewModel = new EscuelaViewModel();
EscuelaViewModel.LoadViewData();
return View(EscuelaViewModel);
}
@model EscuelaViewModel
@{
ViewBag.Title = "Home Page";
}
@Html.DropDownListFor(x => x.Nombre, Model.Escuelas, --Select option--)