2017-04-04 23 views
-1

我试图将数据库中的值绑定到View中的下拉列表中。将数据库中的值绑定到实体框架的MVC中的下拉列表

我有一个要求,我需要在视图中的下拉列表中显示数据库值。我试图将电子邮件ID绑定到数据库表的下拉列表中。

在这里,我需要将电子邮件ID添加到下拉菜单中。这是我的模型,

public class UserDetails 
{ 
     public List<SelectListItem> Userdetails { get; set; } 
     public string Email { get; set; } 
} 

这是我的控制器,

public ActionResult Admin() 
{ 
      var db = new DataEntities1(); 
      var query = db.tblEmployees.Select(c => new { c.Email }); 
      ViewBag.Categories = new SelectList(query.AsEnumerable(), "CategoryID", "CategoryName"); 
      return View(); 
} 

这是我的看法,

@model List<MVC_Sample.Models.UserDetails> 

      <div class="dropdown"> 
       @Html.DropDownList("CategoryID", (SelectList)ViewBag.Categories, "--Select One--") 

       </div> 

视图将被装入下拉列表,并从数据库中的值。但不幸的是,我无法添加下拉值。我dono我在这里做错了。谁能帮我对这个..

+0

是什么类别ID和类别名称? –

+0

你确定'CategoryID'&'CategoryName'而不是'Email'作为文本和值字段作为'SelectList'传递来查看吗?可能你想使用'ViewBag.Categories = new SelectList(query.AsEnumerable(),“Email”,“Email”);'。 –

+0

你甚至没有把你的模型返回到视图,你的'@model List '根本就没有意义。你想创建多个下拉菜单(每个UserDetails一个)?而你的查询没有任何意义 - 它只返回一个属性,并且不包含“CategoryID”和“CategoryName”属性。你想在这里做什么? –

回答

1

至于其他用户COMENT你的意见,问题可能是,那CategoryIDCategoryName不存在于THQ query

不过,我通常喜欢在下拉绑定List<SelectListItem>而不是绑定到SelectList,因为它更容易创建强类型查询。

我会改变这些线在控制器上:

var query = db.tblEmployees.Select(c => new { c.Email }); 
ViewBag.Categories = new SelectList(query.AsEnumerable(), "CategoryID", "CategoryName"); 

到:

List<SelectListItem> query = db.tblEmployees.Select(c => new SelectListItem { Text = c.Email, Value = c.CategoryId }).toList(); 
ViewBag.Categories = query; 

然后,在视图中。你应该改变

@Html.DropDownList("CategoryID", (SelectList)ViewBag.Categories, "--Select One--") 

要:

@Html.DropDownList("CategoryID", (List<SelectListItem>)ViewBag.Categories, "--Select One--") 
+0

非常感谢。它的工作正常 – Meghana

+0

OP有一个属性'List Userdetails'所以这是什么应该分配,而不是'ViewBag' - 在视图中'@ Html.DropDownListFor(m => m.CategoryID,Model.Userdetails,“ ...“)' –

相关问题