如何为列表<string> </string>添加MVC Dropdown

时间:2014-06-04 10:20:53

标签: c# asp.net-mvc dropdownlistfor

我正在尝试向我的MVC项目添加Dropdownlistfor而没有运气。 我想显示一个客户列表。 我希望显示客户并选择ID。

我正在努力将我的列表投射到selectListItems中,有人可以帮我解决这个问题。

控制器

public ActionResult createNewUser()
{

    List<string> Customers = DBH.CustomerBranchGetAll();

    var Model = new UserModel
    {
       Customers = Customers
    };

    return View(Model);

}

模型

public class UserModel
{

   public int CustomerId { get; set; }
   public List<string> Customers { get; set; }
   public IEnumerable<SelectListItem> SelectCustomers
   {
      get { return new SelectList(Customers, "Id", "Name"); }
   }
}

查看

<div class="editor-label">
    @Html.Label("Choose Your Customer name")
</div>
<div class="editor-field">
    @Html.DropDownListFor(model => model.CustomerId, Model.SelectCustomers)
    @Html.ValidationMessageFor(model => model.Customers)
</div>

2 个答案:

答案 0 :(得分:2)

阅读SelectList

您的Customers不是包含Id & Name属性的对象。在您的代码中,它只是一个字符串列表。List<string> Customers

您需要定义一个具有Name和Id属性的类并使用它

public class Customer{
 public string Name{get;set;}
 public int Id {get;set;}
}

然后准备一个分配了Id和Name属性的客户对象

List<Customers> customers = DBH.CustomerBranchGetAll(); 
var Model = new UserModel
{
   Customers = customers
};

在视图中

  @Html.DropDownListFor(model => model.CustomerId, 
                        new SelectList(Model.Customers,"Id","Name"))

答案 1 :(得分:1)

SelectList有一个带IEnumerable的构造函数..所以你只需要这样做:

@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Customers))

您可以完全删除SelectCustomers媒体资源。