我无法从表中填充DropDownList。 EF和MVC4

我相信这会在我的HomeController中创建一个列表。 但不确定是什么调用它或它在Controller旁边的位置可能是第一个Add ActionResult(GET方法)。

public static IEnumerable items() { using (oesacEntities_compact db = new oesacEntities_compact()) { var query = from s in db.tblSponsors select new { s.SponsorID, s.BizName }; return query.AsEnumerable() .Select(x => new SelectListItem { Value=x.SponsorID.ToString(), Text = x.BizName }).ToList(); } } 

我似乎无法将其发送到添加视图或从添加视图引用它:

 
@Html.DropDownListFor(model => model.SponsorID,IEnumerable SelectList);

在其他编码语言中似乎很简单。 我想填充一个下载大约有200个赞助商ID的下拉值,BizNames用于文本。 至少现在。 当我想要显示具有所选值的编辑视图时,上帝帮助我。 谢谢你的stackoverflow

您需要将SelectList传递给您的视图。 理想情况下,您的视图模型应包含SelectList的属性,但您可以(yuk)使用ViewBag

查看模型

 public class MyViewModel { public int SponsorID { get; set; } // other properties public SelectList SponsorList { get; set; } } 

调节器

 public ActionResult SomeThing() { MyViewModel model = new MyViewModel(); // assign the select list var sponsors = from s in db.tblSponsors; model.SponsorList = new SelecList(sponsors, "SponsorID", "BizName"); return View(model); } 

视图

 @Html.DropDownListFor(model => model.SponsorID, Model.SponsorList); 

或者如果您将选择列表分配给ViewBag

 @Html.DropDownListFor(model => model.SponsorID, (SelectList)ViewBag.SponsorList);