2013-08-26 42 views
1

我在我的数据库中有一个表,我选择所有Mem_NA将其填充到我的视图中的下拉列表中。使用MVC4中的sql数据库中的值填充下拉列表

我不明白我该如何填写那里的值?有人可以帮我一把吗?

我的模型

public class MemberBasicData 
{ 
    public int Id { get; set; } 
    public string Mem_NA { get; set; } 
    public string Mem_Occ { get; set; } 
} 

public List<MemberBasicData> GetAllMembers() 
{ 
    DateTime today = DateTime.Now; 
    List<MemberBasicData> mbd = new List<MemberBasicData>(); 
    using (SqlConnection con = new SqlConnection(Config.ConnectionString)) 
    { 
    using (SqlCommand cmd = new SqlCommand("SELECT Id,Mem_NA,Mem_Occ FROM Mem_Basic", con)) 
    { 
     try 
     { 
     con.Open(); 
     SqlDataReader reader = cmd.ExecuteReader(); 
     while (reader.Read()) 
     { 
      MemberBasicData mb = new MemberBasicData(); 
      mb.Id = (int)reader["Id"]; 
      mb.Mem_NA = (string)reader["Mem_NA"]; 
      mb.Mem_Occ =(string)reader["Mem_Occ"]; 
      mbd.Add(mb); 
     } 
     } 
     catch (Exception e) 
     { 
     throw e; 
     } 
     finally 
     { 
     if (con.State == System.Data.ConnectionState.Open) 
     { 
      con.Close(); 
     } 
     } 

     return mbd; 
    } 
    } 
} 

GetAllMembers()功能是我用于获取会员的所有细节一个IEnumerable功能。我可以使用相同的功能填写下拉列表吗?

我控制器

public ActionResult Register() 
{        
    return View(new Member()); 
} 

,并查看

@Html.DropDownListFor("-- Select --", new SelectList("")) <=== ???? i dont know 
+0

Btw。你不应该使用catch(...){throw e; ''。仅当您想更改发生异常的源和堆栈跟踪时,才使用它:http://stackoverflow.com/a/1697241/959687 –

回答

1

型号

public MemberModel 
{ 
    List<SelectListItem> MemberList { get; set; } 
} 

控制器

public ActionResult Register() 
{ 
    MemberModel model = new MemberModel(); 

    model.MemberList = GetAllMembers() 
     .Select(m => new SelectListItem 
     { 
      Text = string.format("{0}, {1}", m.Mem_NA, m.Mem_Occ), 
      Value = m.Id 
     }); 

    SelectListItem default = new SelectListItem 
    { 
     Text = "-- SELECT --", 
     Value = 0 
    }; 

    model.MemberList.Insert(0, default); 

    return View(model); 
} 

查看

@Html.DropDownList(Model.MemberList); 

UPDATE:该版本增加了一个默认的条目列表的开头。

0

@Html.DropDownListFor获得IEnumerableSelectListItem。但是,您想使用MemberBasicData的列表。您必须将MemberBasicData列表转换为SelectListItem并将其传递给@Html.DropDownListFo r而不是列表MemberBasicData。要将相关数据传递给视图,请指定Sirwan,您可以使用ViewBagViewData

相关问题