Asp.net mvc 4 ASP.NET MVC 4未从数据库填充dropdownlist
我是ASP.NETMVC4的新手。我想通过从数据库中获取值来填充dropdownlist。但是dropdownlist并没有填充数据。我没有达到我错的地方。在以下链接的基础上,我开发了我的代码。有没有人有其他更好的办法呢。我在Razor引擎中使用代码优先的方法。 我的控制器类: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(); //
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。但我的代码并没有从数据库中检索数据。我尝试了你的代码,但它没有在下拉列表中填充值。。。所以,请建议一些代码,它将检索数据库中的数据,并根据我的上述逻辑将数据绑定到下拉列表。