使用实体框架将数据库中的值绑定到 MVC 中的下拉列表

Bind values from database to dropdown in MVC with Entity frame work

我正在尝试将数据库中的值绑定到视图中的下拉列表。

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

的下拉列表

这里我需要将电子邮件 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>

视图将加载下拉列表和数据库中的值。但不幸的是,我无法添加要下拉的值。我在这里做错了。谁能帮我解决这个问题..

正如其他用户在评论中评论您一样,问题可能是 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--")