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

时间:2014-09-05 00:24:24

标签: c# asp.net-mvc entity-framework asp.net-mvc-4 selectlist

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

    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

1 个答案:

答案 0 :(得分:2)

您需要将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);