SelectedValues在MultiSelectList mvc中不起作用

我有一个类似的课程

public class Category { public int ID { get; set; } public string Name { get; set; } public ICollection CategorySelected { get; set; } public static List GetOptions() { var categories = new List(); 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; } } 

在控制器中,我填充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); } 

在View Code中我有

 @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(); }