Вы не должны связываться с model.Users
в качестве первого аргумента, поскольку это представляет список. Первым аргументом должен быть массив строк / целых чисел, который будет содержать выбранные значения:
Пример:
public class MyViewModel
{
pubilc string[] SelectedUserIds { get; set; }
public IEnumerable<UserViewModel> Users { get; set; }
}
public class UserViewModel
{
public string Id { get; set; }
public string Name { get; set; }
}
и затем:
@Html.ListBoxFor(
model => model.SelectedUserIds,
new MultiSelectList(Model.Users, "Id", "Name")
)
, который успешно свяжется с:
[HttpPost]
public ActionResult Index(string[] selectedUserIds) { ... }
или
[HttpPost]
public ActionResult Index(MyViewModel model) { ... }
но, конечно, во втором случае вы получите только заполненное свойство SelectedUserIds
, поскольку это единственное, что отправляется из представления. Если вам нужно повторно отобразить то же представление (например, из-за ошибок модели), вам нужно будет повторно заполнить свойство Users
collection модели vie, поскольку оно не будет сохранено.