Я использую select2, используя MVC 5 и C#.
У меня проблемы с загрузкой выпадающего списка (select2) с начальными данными модели.
элементы, переданные в соответствующем поле привязки, оценены правильно, но они не отображаются в select2!
Я имею в виду, несмотря на то, что список полей ViewModel, правильно оцененных контроллером, выпадающий список (select2) не оценивается правильно, как будто модель привязки не работает.
Само собой разумеется, я гуглю 1,5 дня.
К счастью (:)) У меня нет проблем при загрузке select2 со всеми элементами, выпадающий список работает корректно даже на пост, даже я могу взять выбранные элементы.
Большое спасибо все
Ps: теперь, когда я пишу, у меня есть сомнения; Может быть, select2 не работает со списком?
Просмотр
@section scripts{
...
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
}
@Html.DropDownListFor(model => model.MezziStraSelect, Model.MezziStraOrdinari, new { style = "width: 100%", @class = "form-control" })
JS
$(document).ready(function () {
//...
$("#MezziStraSelect").select2({
placeholder: "Select one or more items",
multiple: true,
allowClear: true
});
@if ( Model.MezziStraSelect == null)
{
<text>$("#MezziStraSelect").val(null).trigger("change");</text>
}
}
ViewModel
public Guid[] MezziStraSelect { get; set; }
public MultiSelectList MezziStraOrdinari { get; set; }
Контроллер
//Load List MezziStraOrdinari
var _stra = m.GetMezziStraordinari().Select(x => new
{
id = x.VoceSpesaID,
desc = x.VoceSpesa
}).ToList();
//view model set field
vm.MezziStraOrdinari = new MultiSelectList(_stra, "id", "desc");
//Load array Mezzi used from item selected
List<Guid> _mezziStraUsati = new List<Guid>();
var elems = dc.ItemSelected.FirstOrDefault(x => x.ItemID.ToString() == _guidSelected);
if (elems!=null)
{
elems.VociSpese.ToList().ForEach(x =>
{
if (x.VociSpesa.Straordinario == true)
_mezziStraUsati.Add(x.VoceSpesaViaggioID); //VoceSpesaViaggioID is GUID
});
if (_mezziStraUsati.Count>0)
vm.MezziStraSelect = _mezziStraUsati.ToArray(); //Guid[]
}