Multiselectlist меняет динамически asp.net mvc razor

Я использую этот код для создания файла multi-select2. Теги - это MultiSelectList.

@Html.DropDownList("mail-to", (IEnumerable<SelectListItem>)ViewBag.Tags, String.Empty, htmlAttributes: new { multiple = "", @class = "form-control select2 select2-multiple" })

$("#mail-to").select2({
           minimumResultsForSearch: -1,
           closeOnSelect: false,
       });

Работает отлично. Теперь я хочу изменить параметры выбора с помощью другого ViewBag на основе события изменения, отмеченного флажком. Есть ли способ изменить данные select2, заполненные этим типом списка, или способ MVC?

Что я пробовал:

$("#mail-to").select2({
    tags: @ViewBag.TagsArea, //or tags: @Html.Raw((IEnumerable<SelectListItem>)ViewBag.TagsArea)
                    });

Не имеет отношения, но это должен быть ListBox(), а не DropDownList() - см. этот ответ

user3559349 11.04.2018 11:48

И было бы tags: @Html.Raw(Json.Encode(ViewBag.TagsArea)),, чтобы преобразовать IEnumerable<SelectListItem> в массив javascript

user3559349 11.04.2018 11:50

Изменено в список, спасибо за информацию. Но не работает, запись тегов таким образом дает Option tags is not allowed for Select2 when attached to a <select> element

Rubén M 11.04.2018 12:13

Какую версию select2 вы используете?

Water Cooler v2 11.04.2018 12:33

Использовал 4.0.2, обновился до 4.0.6, все та же проблема

Rubén M 11.04.2018 14:04
0
5
360
1

Ответы 1

Решить удалось:

var areas = @Html.Raw(Json.Encode(ViewBag.Tags)) ;    
$("#mail-to").empty();
     $.each(areas, function (index, element) {
         $("#mail-to").append($('<option/>', {
            value: element.Value, text: element.Text
             }));
     });

Другие вопросы по теме