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

时间:2017-04-04 06:59:21

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-3

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

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

在这里,我需要将电子邮件ID添加到下拉列表中。这是我的模特,

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
//      props.put("mail.smtp.host", "smtp.gmail.com");smtp.office365.com
        props.put("mail.smtp.host", "smtp.office365.com");
        props.put("mail.smtp.port", "587"); //change this port

这是我的控制器,

    <?Php
 class adminQuery{

    public function insertquery($con , $query){
       try {
           $con->query($query);

           throw new Exception($con->error);  // Here you're throwing the exception manually 

       } catch (Exception $e) {
        echo $e;
       }
    }
}

这是我的观点,

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

视图将加载下拉列表和数据库中的值。但遗憾的是,我无法将值添加到下拉列表中。我不知道我在哪里做错了。任何人都可以帮我这个..

1 个答案:

答案 0 :(得分:1)

当其他用户对您的评论进行评论时,可能会出现问题,CategoryID

上没有CategoryNamequery

但是,我通常更喜欢将下拉列表绑定到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--")