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

ASP.NET中使用Ajax填充DropDownListFor后如何设置选中值?

解决Ajax填充DropDownListFor后设置选中值的问题

你的问题核心在于:服务器端生成DropDownListFor时,下拉列表是空的(new SelectList(string.Empty...)),此时设置的选中值(参数2)因为没有对应的<option>元素,完全不会生效。必须在Ajax异步加载完选项后,通过客户端JavaScript来设置选中状态。

具体解决方案步骤:

  1. 修正Ajax的拼写错误
    你的Ajax代码里datatype应该是dataType(首字母大写T),这个错误可能导致JSON解析失败,先修正:

    $.ajax({
        type: 'GET',
        url: '/GetListExams/Get_fLW_examsTB',
        dataType: 'json', // 修正拼写
        success: function (data) {
            // 后续逻辑
        }
    });
    
  2. 保存目标选中值到页面
    如果需要选中的值来自模型,先把它存到隐藏域里,方便JS读取:

    @* 用隐藏域存储需要选中的exam_id *@
    @Html.HiddenFor(m => m.FirstOrDefault()?.fLW_sch_exam_2.exam_id, new { id = "targetExamId" })
    
  3. 在Ajax成功回调中设置选中值
    加载完所有下拉选项后,通过JS设置选中状态,同时建议先清空原有选项(避免重复加载):

    $.ajax({
        type: 'GET',
        url: '/GetListExams/Get_fLW_examsTB',
        dataType: 'json',
        success: function (data) {
            // 清空默认提示项之外的所有选项
            $('#drExamsDate option:not(:first)').remove();
            
            // 遍历数据添加选项
            $.each(data, function (index, value) {
                $('#drExamsDate').append(`<option value="${value.examid}">${value.shortname}</option>`);
            });
            
            // 获取目标选中ID并设置
            var targetId = $('#targetExamId').val();
            if (targetId) {
                $('#drExamsDate').val(targetId);
            }
        }
    });
    

额外说明:

  • 如果不需要从模型取选中值,直接在JS里写死ID(比如你原来的2),可以直接替换成$('#drExamsDate').val(2);。
  • 服务器端的DropDownListFor中,new SelectList(string.Empty, "Value", "Text", 2)这个选中设置完全无效,因为初始化时没有任何选项,建议去掉第四个参数,避免混淆:
    @Html.DropDownListFor(m => m.FirstOrDefault().fLW_sch_exam_2.exam_id, new SelectList(Enumerable.Empty<SelectListItem>()), "---اختر يوم الاختبار---", new { id = "drExamsDate", @class = "fw-bold form-control" })
    

内容的提问来源于stack exchange,提问作者Abdullah Al-Mohammadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:22:52