我有一个类
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<Category> CategorySelected { get; set; }
public static List<Category> GetOptions()
{
var categories = new List<Category>();
categories.Add(new Category() { ID = 1, Name = "Bikes" });
categories.Add(new Category() { ID = 2, Name = "Cars" });
categories.Add(new Category() { ID = 3, Name = "Trucks" });
return categories;
}
}
在 Controller 中,我填充 MiltiselectItems 并为其设置 selectedValues
public ActionResult Index()
{
Category cat=new Category();
cat.CategorySelected.Add(new Category { ID =1, Name = "Bikes" });
cat.CategorySelected.Add(new Category { ID =3, Name = "Trucks" });
var list = Category.GetOptions();
product.Categories = new MultiSelectList(list, "ID", "Name", CategorySelected);
}
在查看代码我有
@Html.ListBox("Category", Model.Categories)
运行时我的操作 SelectedValues 不起作用。我做错了什么?
最佳答案
MultiSelectList
构造函数的最后一个参数采用所选 Id
的数组,而不是 Category
复杂类型的集合。
如果您将其更改为此,它将按预期工作:
product.Categories = new MultiSelectList(list, "ID", "Name", cat.CategorySelected.Select(c => c.ID).ToArray());
它只是将其投影到
Id
的数组中。请参阅下面的屏幕截图:
Ps 我还必须将此添加到
Category
的构造函数中以初始化集合:public Category()
{
CategorySelected = new List<Category>();
}
关于c# - SelectedValues 在 MultiSelectList mvc 中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21826280/