0

DBからDropDownListにデータをバインドしたいのですが、次の方法を試しましたが、データがドロップダウンにバインドされていません。

これは私のコントローラーです

         [AcceptVerbs(HttpVerbs.Get)]
         public ActionResult AddNew()
          {
        ViewBag.RoleName = new SelectList(GetRoles(), "RoleID", "RoleName");
        return View();
        }
        public List<SelectListItem> GetRoles()
       {
        var roles = new List<SelectListItem>();
        SqlConnection conn = new SqlConnection("Data Source=LMIT-0039;Initial Catalog=BugTracker;Integrated Security=True");
        SqlCommand Cmd = new SqlCommand("Select GroupId,EmplopyeeRole from  EmployeeGroup", conn);
        conn.Open();
        SqlDataAdapter da = new SqlDataAdapter(Cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);         
            for (int i = 0; i <= ds.Tables[0].Rows.Count-1; i++)
            {
                var model = new ResourceModel();
                model.RoleId = Convert.ToInt16(ds.Tables[0].Rows[i]["GroupId"]);
                model.RoleName = ds.Tables[0].Rows[i]["EmplopyeeRole"].ToString();
            }          
        conn.Close();
        return roles;
    }

これは私のモデルです

              public class ResourceModel
{
    public static List<ResourceModel> GetList { get; set; }
    public Int16 EmployeeId { get; set; }
    public string EmployeeName { get; set; }
    public string EmployeeEmailId { get; set;}
    public string GroupName { get; set; }
    public string EmployeePassword { get; set; }

    public static List<SelectListItem> GetRoles { get; set; }
    public int RoleId { get; set; }
    public string RoleName { get; set; }      

}

これは私のaspxPageです

    <%:Html.DropDownList("RoleName")%>

ブレークポイントを設定して、GetRolesメソッドにデータがあることを確認すると、どこが間違っているのか誰かに教えてもらえますか

4

2 に答える 2

0

問題は、モデルにその名前のプロパティがあり、RoleNameそれがにあることだと思いますViewBag

したがって、使用するときに<%:Html.DropDownList("RoleName")%>一種の混乱があります。

ViewBag.RoleName私は次のようなものに変更することを提案しViewBag.Roles、それから試してみてください、

<%:Html.DropDownList("Roles")%>

于 2012-07-18T10:25:54.003 に答える
0

forループでは、roles.add(new SelectList{.Value=i, .Text=i});代わりにフィールドを使用しますi

ビューページの使用<%: Html.DropDownList("RoleName", New SelectList(youClass.GetRoles, "Value", "Text"))%>とyouClassインポートページで。

linqとforeachも使いやすく、適切な拡張メソッドとして開発できます。

于 2012-07-18T10:12:00.783 に答える