class User() {
public List<Customer> Customers;
}
class Customer() {
public long Id;
public string Name;
}
我填充所选项目
User MyUser = new User();
MyUser.Customers = db.Customers.Where(...).ToList();
我以这种方式传递所有项目的列表
ViewBag.Customers = db.Customers.OrderBy(c => c.Name).ToList();
在我的视图中,我希望将其显示为多选HTML元素,其中所有(ViewBag.Customers)元素和(MyUser.Customers)都已选中。 我试过
@model MySCL.Models.User
@Html.ListBoxFor(m => m.Customers, new MultiSelectList(ViewBag.Customers, "Id", "Name"), new {Multiple = "multiple", size = "5" })
但它只显示完整列表而不选择任何项目。 这是最好的做法吗? 还有另一种更好的方法吗? 如果我有一个字符串列表,我该怎么做呢?而不是客户列表?
答案 0 :(得分:1)
MultiSelectList constructor还会选择一个IEnumerable项目列表,因此如果您将代码更改为:
new MultiSelectList(ViewBag.Customers, "Id", "Name", Model.Customers)
然后列表应该从所有客户的项目开始。
答案 1 :(得分:1)
我通过传递第4个参数作为int或string的列表来解决,其中包含对象的唯一键而不是对象列表。
new MultiSelectList(ViewBag.Customers, "Id", "Name", Model.Customers.Select(c => c.Id))