Проблема возникает из-за того, что вы используете то же имя ключа ViewData
, что и имя модели, связанное с ListBox
помощником в этой строке:
@Html.ListBox("AllRoles", (MultiSelectList)ViewData["AllRoles"], new { multiple = "multiple" })
Предполагается, что AllRoles
является свойством массива или спискавнутри класса viewmodel вы не можете повторно использовать его как ViewData
имя ключа, потому что между ними произойдет конфликт имен, в результате списки параметров не будут отображаться должным образом.Вы можете переименовать ViewData
имя ключа с любым именем, отличным от имени свойства viewmodel:
ViewData["AllRolesList"] = new MultiSelectList(allRolesFromService, "Id", "Name", userRoles);
, а затем использовать новое имя ключа в ListBox(For)
helper:
ListBox helper
@Html.ListBox("AllRoles", (MultiSelectList)ViewData["AllRolesList"], new { multiple = "multiple" })
ListBox для помощника
@Html.ListBoxFor(model => model.AllRoles, (MultiSelectList)ViewData["AllRolesList"], new { multiple = "multiple" })