我是 ASP.NET MVC 4 的新手。我想从数据库表 BO 中填充下拉列表,其中 Column name 为Id, Code, Name, OrgId
。我想将两个Code
&Name
列的数据绑定到 DataTextfield,将Id
列 Data 绑定到下拉列表的 DataValueField。我为此创建了如下代码,但它没有从表中返回数据并且var BOList
保持为空:
my connectionstring is
<add name="iRegDBContext"
connectionString="Data Source=****;Initial Catalog=iReg;User ID=**;Password=****;Integrated Security=True"
providerName="System.Data.SqlClient"
/>
我的控制器类:
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>
}
我真的不知道我哪里错了。我从以下链接的参考中开发了我的代码 单击此处。请建议在代码中更正...
更新:我尝试在我的控制器中遵循Matt Bodily 的代码,我看到的是代码没有从数据库中获取数据,而该代码是
public ActionResult populatejQgrid()
{
ViewBag.BOData = GetDropDown();
return View();
}
public static List<SelectListItem> GetDropDown()
{
List<SelectListItem> ls = new List<SelectListItem>();
var lm = from m in db.BOs //fetch data from database
select m;
foreach (var temp in lm)
{
ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.Id.ToString() });
}
return ls;
}
在控制器中:
@Html.DropDownList("BOData", (List<SelectListItem>)ViewBag.BOData)
但是当我ls
通过手表看到它的价值时,它总是向我展示Count = 0
,但它没有给我任何错误。
我发现了这个问题的新东西。当我将鼠标指针悬停在 var lm 上时;它向我显示了查询,并且 FROM 子句中的查询表名不是我的 SQL 数据库中的那个。我的 SQL 表名是 BO,在查询中它采用 BOes。我不知道这个名字是从哪里来的。我认为这是所有这些问题的主要原因那么我如何克服这个问题?