Asp.net mvc 4 ASP.NET MVC 4未从数据库填充dropdownlist

Asp.net mvc 4 ASP.NET MVC 4未从数据库填充dropdownlist,asp.net-mvc-4,html-select,Asp.net Mvc 4,Html Select,我是ASP.NETMVC4的新手。我想通过从数据库中获取值来填充dropdownlist。但是dropdownlist并没有填充数据。我没有达到我错的地方。在以下链接的基础上,我开发了我的代码。有没有人有其他更好的办法呢。我在Razor引擎中使用代码优先的方法。 我的控制器类: public class iRegController : Controller { private iRegDBContext l_oDbBO = new iRegDBContext(); //

我是ASP.NETMVC4的新手。我想通过从数据库中获取值来填充dropdownlist。但是dropdownlist并没有填充数据。我没有达到我错的地方。在以下链接的基础上,我开发了我的代码。有没有人有其他更好的办法呢。我在Razor引擎中使用代码优先的方法。

我的控制器类:

public class iRegController : Controller
{
    private iRegDBContext l_oDbBO = new iRegDBContext();  

    // GET: /iReg/

    public ActionResult PopulatejQgrid()
    {
        var BOList = l_oDbBO
                     .BO
                     .ToList()
                     .Select(d => new SelectListItem
                         {
                             Value = d.Id.ToString(),
                             Text = d.Name + "[ " + d.Code + " ]"
                         });
        ViewBag.BOData = new SelectList(BOList, "Value", "Text"); 
        return View();
    }
}
我的模型课:

public class BO
{
    public Guid Id { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
}

public class iRegDBContext : DbContext
{
    public DbSet<BO> BO { get; set; }
}
我的cshtml类:

@model MvciReg.Models.BO

@{
    ViewBag.Title = "PopulatejQgrid";
}

@using (Html.BeginForm())
{
    <fieldset>
        BO : 

        @Html.DropDownList("BOData")
        <p>
            <input type="submit" value="Go" />
        </p>
    </fieldset>
}
更新:我的表名是BO,数据库名是iReg。我的连接字符串是

 <add name="iRegDBContext"
  connectionString="Data Source=****;Initial Catalog=iReg;User ID=**;Password=****;Integrated Security=True"
  providerName="System.Data.SqlClient"
/>

尝试将列表作为模型传递给Html.DropDownList,如下所示:

@Html.DropDownList("BOData", (SelectList)ViewBag.BOData)

您可以尝试另一种方式:

public ActionResult PopulatejQgrid()
    {
        var myList = new List<SelectListItems>();

        var list = l_oDbBO.BO.ToList();

        var items = from g in list
                     select new SelectListItem
                         {
                             Value = g.Id.ToString(),
                             Text = g.Name + "[ " + g.Code + " ]"
                         };

        foreach(var item in items)
           myList.add(item);

        ViewBag.BOData = myList ; 
        return View();
    }
在您看来:

@Html.DropDownList("Booo", (List<SelectListItem>)ViewBag.BOData)
据 @DropDownList元素需要一个IEnumerable类型的集合来填充DropDownList。因此,重写您的查询,例如:

  IEnumerable<SelectListItem> BOList = l_oDbBO
                 .BO.Select(d => d)
                 .AsEnumerable)
                 .Select(d => new SelectListItem
                     {
                         Value = d.Id.ToString(),
                         Text = d.Name + "[ " + d.Code + " ]"
                     });
我应该做这项工作

public ActionResult PopulateJQgrid()
{
   ViewBag.BOData = new SelectList(l_oDbBO.BO, "Name", "Name");
   return View();
}
在你看来:

@Html.DropDownList("BOData")
-选择ListContext.Table,作为值使用的属性的列名,作为dropdownlist文本使用的属性的列名


Its在“选择新”下显示红色下划线,如果我更改了“选择”,则在.ToList.下显示红色下划线。。我该怎么办???还是没用。。。。我已经更新了我的问题。。。如果你想了解更多关于我的代码的信息,请告诉我……@Rahul尝试返回你的值列表,而不使用下拉列表,看看问题是在db连接中还是在填充下拉列表中@Andrey.Gubal:连接时不会出现任何错误。我认为问题在于延迟的查询执行。它不会返回单个值。我只是想问一下,在我的BO表中,还有一列OrgId,但在这段代码中,它没有使用这一列,这就是为什么我没有在模型类中提到它。这个问题是不是因为这个额外的专栏…?@Rahul不,这不是问题。如果你不退让你的价值观,你看到他们在你的网页?考虑扩大你的答案,向ASK解释为什么这达到了预期的结果,可能链接到文档。照目前的情况,这只是略微有用。我想将BO表的两列名称和代码绑定到Datadropdownlist的DataTextField。但我的代码并没有从数据库中检索数据。我尝试了你的代码,但它没有在下拉列表中填充值。。。所以,请建议一些代码,它将检索数据库中的数据,并根据我的上述逻辑将数据绑定到下拉列表。