Этот код для выбора нескольких с выбранными параметрами по умолчанию работал нормально на .netcore 5, но после обновления до .net 8 выбранные параметры не работали
код С#
List<int> currentContentCatIDs = itemLoc.Content.ContentCategories.Where(x => x.Category.CatTypeId == 2).Select(a => a.CatId).ToList();
if (currentContentCatIDs != null && currentContentCatIDs.Count > 0)
{
List<SelectListItem> catsSelectList = new();
foreach (var instructorLoc in instructors)
catsSelectList.Add(new SelectListItem { Text = instructorLoc.Title, Value = instructorLoc.CatId.ToString(), Selected = currentContentCatIDs.Contains(instructorLoc.CatId) });
ViewBag.MultiInstructors = catsSelectList;
}
else
ViewBag.MultiInstructors = new SelectList(instructors, "CatId", "Title", "");
вид :
<select asp-for = "InstructorsCatIDs" asp-items = "ViewBag.MultiInstructors" class = "select2 custom-select block" multiple = "multiple"></select>
модель просмотра:
public ContentCreateDto()
{
InstructorsCatIDs = [];
}
public int[] InstructorsCatIDs { get; set; }
отладка контроллера:
Посмотреть файл:
проверка браузера:
параметры не включены, выберите на стороне клиента при проверке элементов, но на контроллере при отладке список элементов включает выбранные параметры
нет сбоя при отладке, объект переходит из контроллера для просмотра, бросает viewbag с выбранными параметрами, но параметры не выбираются после запуска, тот же проект хорошо работает на .net5, код не изменяется
Какова итоговая разметка на стороне клиента для этого элемента <select>
при отладке? Включают ли какие-либо элементы <option>
в этой разметке атрибут selected
? Когда вы отлаживаете серверный код, где вы устанавливаете это значение: Selected = currentContentCatIDs.Contains(instructorLoc.CatId)
— Вы наблюдаете, чтобы это условие было истинным для какой-либо из записей? Как вы подтвердили эти вещи?
параметры не включены, выберите на стороне клиента при проверке элементов, но на контроллере при отладке список элементов включает выбранные параметры
я приложу изображения к вопросу, чтобы лучше описать это
вопрос дополнен изображениями
Не могли бы вы также прикрепить изображения выбранных опций к своему пользовательскому интерфейсу?
вопрос обновлен
@AhmadAlaa: Из любопытства, возможно, стоит проверить исходный источник страницы, который браузер получил с сервера, поскольку он может отличаться от текущего DOM. Если природа selected
элемента(ов) изменилась после загрузки исходного исходного кода страницы, то проблема может быть совсем в другом месте. Возможно, также стоит удалить Select2 из уравнения и провести повторное тестирование, чтобы увидеть, связано ли это. И т. д.
Я уже сделал это перед публикацией вопроса, и визуализированный чистый HTML не выбран, и обратите внимание, что если я вернусь обратно в .net6 или 5, тот же код будет работать.
Я протестировал ваши коды, и они работают у меня на .net8. Проверьте сценарий вашей страницы или еще что-нибудь, чтобы увидеть, что меняет результат. Результат теста.
проблема была в модели представления, я инициализировал массив в конструкторе, вопрос обновлен
Проблема была в модели представления, я инициализировал массив в конструкторе, мне нужно было удалить этот код из модели представления.
InstructorsCatIDs = [];
Что в этом «не работает»? При отладке что конкретно выходит из строя?