Я знаю, что этот вопрос задан несколько раз, но ни одно из этих решений не работает для меня. Вот мой код.Select2 Multiselect binding не работает
Модель:
public List<string> LanguagesSpoken { get; set; }
public List<SelectListItem> LanguageTypes { get; set; }
Контроллер
[HttpPost]
public ActionResult Update(int? id, OrganizationSetUp orgsetup)
{
organizationSetUp.LanguagesSpoken = _session.Query<Language>().Where(x => x.ID == organizationId).Select(x => x.LanguageType.ID.ToString()).ToList();
orgSetup.LanguageTypes = _session.Query<LanguageType>().Select(m => new SelectListItem { Value = m.ID.ToString(), Text = m.Name }).ToList();
}
Вид:
@using (Html.BeginForm("Update", "OrganizationSetup", new { id = Model.OrganizationId }, FormMethod.Post, new { @class = "form-horizontal" }))
{
@Html.ListBoxFor(model => model.LanguagesSpoken,Model.LanguageTypes, new{ @class = "form-control", multiple = "multiple" })
}
Я передаю значения от контроллера, и он не связан, а также не обновляется на POST. Выпадающее меню заполняется, и многосегмент работает, но не привязывается к модели при отправке. Я что-то упускаю?
EDIT: Как указал shyju, я изменил значение от имени к ID, и теперь я могу отображать выбранное значение. Но изменение значения и отправка по-прежнему не связывают новое значение. Также удалили список Multiselect, как было предложено.
не связаны, но 'LanguageTypes' уже' IEnumerable 'создавая таким образом еще один идентичный используя' новый MultiSelectList (..) 'не имеет смысла. И 'ListBoxFor()' уже добавляет атрибут 'multiple =" multiple "'. Вы не указали свой метод POST, но код, который вы указали, будет привязан к методу, который вы моделируете как параметр, а значение 'LanguagesSpoken' будет массивом выбранных значений опций. –