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

Bootstrap模态框下拉框默认选中问题:如何回显选中行角色

Bootstrap模态框下拉框无法选中对应角色的问题解决

问题原因

  • 数据不匹配:按钮传递的是角色名称(@k.Role),但下拉框的<option>值绑定的是角色ID(@y.Id),用名称去匹配ID自然无法选中对应选项,导致默认选中第一个。
  • 选择器错误:JS代码中用select[name="users.Role"]查找下拉框,但实际HTML里的<select>通过asp-for="users.YetkiId"生成,对应的name属性是users.YetkiId,而非users.Role,导致无法定位到正确的下拉框元素。

修复步骤

1. 修正按钮传递的数据

将按钮的data-role改为传递用户对应的角色外键ID(YetkiId),而非角色名称:

@foreach (var k in Model.users)
{
    <tr class="text-nowrap">
        <td>@k.Id</td>
        <td>@k.Role</td>
        <td>
            <button class="btn btn-outline-primary" data-bs-toggle="modal" data-bs-target="#kullaniciGuncelleModal" data-id="@k.Id" data-role-id="@k.YetkiId">
                Güncelle
            </button>
        </td>
    </tr>
}

2. 修正JS的选择器与赋值逻辑

修改JS代码,获取正确的角色ID,并定位到正确的下拉框元素进行赋值:

$('#usersUpdateModal').on('show.bs.modal', function (event) {
   var button = $(event.relatedTarget); 
   var id = button.data('id'); 
   var roleId = button.data('role-id'); // 获取角色ID
   var modal = $(this);
   
   modal.find('input[name="users.Id"]').val(id);
   // 匹配下拉框的实际name属性,设置对应值
   modal.find('select[name="users.YetkiId"]').val(roleId);
});

提示:可以通过浏览器开发者工具查看下拉框生成的实际name属性值,确保选择器完全匹配。

3. (可选)统一数据类型

如果YetkiId是数字类型,可在JS中转换类型避免字符串/数字不匹配:

modal.find('select[name="users.YetkiId"]').val(parseInt(roleId));

内容的提问来源于stack exchange,提问作者fatma başar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:02:03