.NET Core Razor页面中Select2无法设置选中值问题
解决Select2多选组件在Razor页面编辑页的回显问题
你当前的代码问题在于循环中每次调用$('#selected-cities').val('单个ID')会覆盖之前的选中状态,最终只有最后一个ID被选中。Select2多选模式下需要传入ID数组来一次性设置多个选中项,而不是逐个设置。
修改后的解决方案:
- 先收集所有需要回显的PriceId到数组中
- 确保Select2完成初始化后,一次性设置选中值并触发change事件
调整后的脚本代码:
<script> $(document).ready(function () { // 初始化Select2(如果页面中还未初始化) $('#selected-cities').select2({ placeholder: "Şehir Seçiniz", width: '100%' // 可选,确保组件宽度适配布局 }); // 收集所有需要选中的PriceId var selectedIds = [ @foreach (var packageCity in Model.PackageCities) { @:@packageCity.CityPrice.PriceId, } ]; // 过滤数组末尾可能存在的空值(循环最后会多一个逗号导致) selectedIds = selectedIds.filter(id => id !== undefined); // 一次性设置多选选中项并触发change,通知Select2更新UI $('#selected-cities').val(selectedIds).trigger('change'); }); </script>
额外检查项:
- 确认
packageCity.CityPrice.PriceId的类型与ViewBag.CityPrices中SelectList项的Value类型完全一致(比如都是字符串或数字,类型不匹配会导致选中失败) - 确保
ViewBag.CityPrices包含所有需要回显的PriceId对应的选项,Select2无法选中不存在于下拉列表中的值 - 如果页面已经在其他位置初始化了Select2,可以去掉脚本中的初始化代码,只保留收集ID和设置选中的逻辑
内容的提问来源于stack exchange,提问作者Pangomi IT
相关产品推荐
相关产品推荐

