3

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

4

4 に答える 4

0

最近、この問題も発生し、Viewbag を使用して問題を解決できました。Db テーブルに合わせて作成する必要がありますが、機能し、非常に簡単です。

ドロップダウン ボックスにデータベース データを入力する

于 2014-07-11T10:30:18.443 に答える