You need to enable JavaScript to run this app. Razor视图中如何将Ajax返回的SelectList数据渲染到下拉选择框
优惠活动
大模型
产品
解决方案
定价
更多

Razor视图中如何将Ajax返回的SelectList数据渲染到下拉选择框

问题原因

你当前错误使用了jQuery的.val()方法,该方法仅用于设置下拉框的选中值,无法替换整个下拉的选项列表,因此接口返回的新配置列表无法渲染到页面上。

具体修改方案

1. 调整AJAX成功回调逻辑

将你原有脚本中done部分的代码替换为如下逻辑,实现清空原有选项、插入新选项的效果:

.done(function (data) {
    const profileSelect = $("#UnMappedEscheatProfileId");
    // 清空原有所有选项
    profileSelect.empty();
    // 插入默认空选项
    profileSelect.append('<option value=""></option>');
    // 遍历返回的配置列表生成新选项
    if (data && data.length > 0) {
        data.forEach(item => {
            // 后端返回的SelectList序列化后默认使用驼峰命名,对应value和text属性
            profileSelect.append(`<option value="${item.value}">${item.text}</option>`);
        });
    }
});

2. 后端可选优化(按需调整)

如果后续需要区分下拉选项的实际值和显示文本,可以调整后端接口的返回构造,显式指定SelectList的取值和显示字段:

public IActionResult OnPostGetData(string selectedClientId)
{
    var profileList = _context.vwTaskGroupByClients
        .Where(c => c.ClientId == selectedClientId && c.EsheatProfileCode != null)
        // 可自行调整Value和Text对应的业务字段
        .Select(a => new { Value = a.EsheatProfileCode, Text = a.EsheatProfileCode })
        .ToList();
    UnMappedEscheatProfiles = new SelectList(profileList, "Value", "Text");
    return new JsonResult(UnMappedEscheatProfiles);
}

内容的提问来源于stack exchange,提问作者AliShiil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:51:03