我是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"
/>
答案 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”)
:)