2014-09-05 33 views
-2

我相信这会在我的HomeController中创建一个列表。但不知道是什么调用它,或者它在Controller旁边的位置,可能是第一个Add ActionResult(GET方法)。我无法从表中填充DropDownList。 EF和MVC4

public static IEnumerable<SelectListItem> 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(); 
     } 

    } 

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

<div class="editor=field"> 
    @Html.DropDownListFor(model => model.SponsorID,IEnumerable<SelectListItem> SelectList); 
</div> 

似乎在其他编码语言那么简单。我想用大约200个赞助商ID作为价值来填充下拉菜单,BizNames用于文本。至少现在。上帝帮助我后,当我想显示一个编辑视图与选定的值。 thankyou stackoverflow

+0

你有什么确切的问题? “这不起作用”在这里添加到您的问题是不是一个有效的事情。你必须提供错误信息。我看到的第一个问题是'DropDownListFor'的第二个参数必须是'yourClass.items()'.. – 2014-09-05 00:31:57

回答

2

您需要将SelectList传递给您的视图。理想的情况是你的视图模型应该包括对SelectList属性,但你可以(议员)使用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); 
+0

我不知道如何创建选择列表。 “model.SponsorList = //你的代码来创建选择列表” 所有我想要做的是使这是一个添加记录视图上的选择的下拉列表:SELECT赞助商,BizName从tblSponsors – JustJohn 2014-09-05 19:21:10

+0

@JustJohn,这就是你的函数'public static IEnumerable items()'正在做,但你可以简化它。我会更新我的答案。 – 2014-09-05 22:21:13