私は ASP.NET MVC 4 の新人です。列名が であるデータベース テーブル BO からドロップダウン リストを作成したいと考えていますId, Code, Name, OrgId
。2列のデータをDataTextfieldにバインドし、Code
列のデータをドロップダウンのDataValueFieldにバインドしたい。次のようなコードを作成しましたが、テーブルからデータを返さず、空のままです:Name
Id
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>
}
どこが間違っているのか本当にわかりません。次のリンク Click hereを参照してコードを開発しました。コードの修正を親切に提案してください...
更新:コントローラーで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 で、クエリでは BO を使用しています。この名前の由来はわかりません。これがこのすべての問題の主な原因だと思うので、どうすればこれを克服できますか??