0

我是 ASP.NET MVC 4 的新手。我想通过从数据库中获取值来填充下拉列表。但是下拉列表没有填充数据。我没有得到我错的地方。在以下链接的基础上,我开发了我的代码。有没有人有其他更好的方法所以请建议。我正在使用带有 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"
/>
4

4 回答 4

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 + " ]"
                     });

应该做的工作。

于 2013-10-11T14:04:44.153 回答
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)
于 2013-10-11T14:00:37.577 回答
0
public ActionResult PopulateJQgrid()
{
   ViewBag.BOData = new SelectList(l_oDbBO.BO, "Name", "Name");
   return View();
}

在您看来:

@Html.DropDownList("BOData")

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

:)

于 2013-10-11T14:55:35.280 回答
0

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

@Html.DropDownList("BOData", (SelectList)ViewBag.BOData)
于 2013-10-11T13:40:03.617 回答