如何将数据绑定到MVC3中的DropDownList?

时间:2012-07-18 09:49:15

标签: asp.net-mvc-3 html-select

我想将数据从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方法中的数据时......任何人都告诉我我在哪里做错了

2 个答案:

答案 0 :(得分:0)

在for循环中,使用roles.add(new SelectList{.Value=i, .Text=i});字段而不是i

在视图页面中使用<%: Html.DropDownList("RoleName", New SelectList(youClass.GetRoles, "Value", "Text"))%>和youClass导入页面。

linq和foreach也很容易使用〜和Develop作为一种合适的扩展方法。

答案 1 :(得分:0)

我想问题是你在模型中有一个名为RoleName的属性,而且你在ViewBag中也有。

因此,当您使用<%:Html.DropDownList("RoleName")%>时,会出现一种混淆。

我建议将ViewBag.RoleName更改为ViewBag.Roles,然后尝试,

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