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

如何让二级下拉框正确加载?控制器方法未触发问题排查

二级下拉框未触发控制器方法的问题排查与修复

核心问题1:函数未实际执行

你的JavaScript代码里只是引用了函数对象,没有调用执行,导致AJAX请求根本没发送,控制器断点自然不会触发。

错误代码:

$(document).ready(function () {
    getTemplateByDepartmentID; // 缺少(),未执行函数
})

$("#deptdropdown").change(function () {
    getTemplateByDepartmentID; // 同样缺少()
})

修复后:

$(document).ready(function () {
    getTemplateByDepartmentID();
})

$("#deptdropdown").change(function () {
    getTemplateByDepartmentID();
})

核心问题2:JsonResult默认禁止GET请求

ASP.NET MVC中,Json()方法默认拒绝GET请求,必须显式允许,否则会返回错误,请求无法到达控制器。

错误控制器代码:

return Json(_uow.Repository<Template>().Get(x => x.TemplateID == id));

修复后(同时修正查询逻辑错误):

// 1. 添加JsonRequestBehavior.AllowGet允许GET请求
// 2. 修正查询条件:应该用DeptID关联部门,不是TemplateID
return Json(_uow.Repository<Template>().Get(x => x.DeptID == id), JsonRequestBehavior.AllowGet);

其他关键优化点

  1. 清空旧选项避免重复
    每次切换部门时,先清空模板下拉框的旧内容,再添加新选项:
success: function (data) {
    $('#templatedropdown').empty();
    $('#templatedropdown').append('<option>--Select--</option>');
    $(data).each(function (index, item) {
        // 注意:模板选项要对应Template实体的属性,不是部门的DeptID/Dept_Name
        $('#templatedropdown').append('<option value="' + item.TemplateID + '">' + item.TemplateName + '</option>');
    });
}
  1. 移除不必要的配置
    GET请求不需要设置contentType: "application/json; charset=utf-8",直接删掉即可,因为GET参数是通过URL传递的,不是请求体。

  2. 处理空选择情况
    当用户选择默认的"--Select--"时,不发送AJAX请求,直接重置模板下拉框:

var getTemplateByDepartmentID = function() {
    var deptId = $('#deptdropdown').val();
    if (!deptId) {
        $('#templatedropdown').empty();
        $('#templatedropdown').append('<option>--Select--</option>');
        return;
    }
    $.ajax({
        url: "@Url.Action("GetTemplateByDeptId", "Home")",
        type: "Get",
        data: { id: deptId },
        success: function (data) {
            // 清空+添加选项逻辑
        }
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:32:15