You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core Razor页面中Select2无法设置选中值问题

解决Select2多选组件在Razor页面编辑页的回显问题

你当前的代码问题在于循环中每次调用$('#selected-cities').val('单个ID')会覆盖之前的选中状态,最终只有最后一个ID被选中。Select2多选模式下需要传入ID数组来一次性设置多个选中项,而不是逐个设置。

修改后的解决方案:

  1. 先收集所有需要回显的PriceId到数组中
  2. 确保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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:03:29