我正在尝试向我的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>
答案 0 :(得分:2)
您的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
媒体资源。