【问题标题】:Fill Dropdownlist with values from sql database in MVC4用 MVC4 中 sql 数据库中的值填充下拉列表
【发布时间】:2013-08-28 12:53:39
【问题描述】:

我的数据库中有一个表,我选择所有 Mem_NA 以将其填充到我视图中的下拉列表中。

我不明白如何在其中填写值?有人可以帮帮我吗?

我的模特

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

【问题讨论】:

  • 顺便说一句。你不应该使用catch (...) { throw e; } 。仅当您想更改发生异常的源和堆栈跟踪时才使用此选项:stackoverflow.com/a/1697241/959687

标签: c# html asp.net-mvc-4


【解决方案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);

更新:此版本将默认条目添加到列表的开头。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      相关资源
      最近更新 更多