ASP.NET MVC 4不从数据库填充下拉列表

时间:2013-10-11 13:22:41

标签: asp.net-mvc-4 html-select

我是ASP.NET MVC 4的新手。我想通过从数据库中获取值来填充dropdownlist。但是dropdownlist没有填充数据。我没有得到我错的地方。在以下链接的基础上,我开发了我的代码。是否有任何其他更好的方式如此善意地建议。我正在使用代码第一种方法与Razor引擎。 Click here

我的控制器类:

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"
/>

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以尝试其他方式:

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)

答案 2 :(得分:0)

根据msdn @ Html.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 + " ]"
                     });

应该做的工作。

答案 3 :(得分:0)

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

在您的视图中:

@Html.DropDownList("BOData")

- SelectList(Context.Table,“您用作值的属性的ColumnName”,“您用作下拉列表文本的属性的ColumnName”)

:)