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

Kendo级联DropDownList无数据加载问题求助

Kendo DropDownList级联功能失效排查方案

针对你遇到的.NET Core环境下Kendo DropDownList级联后子控件无法加载数据(API返回正常但触发无数据模板)的问题,可按以下步骤排查解决:

可能原因及解决步骤

1. 检查CascadeFrom目标控件ID是否匹配

Kendo的.CascadeFrom()参数必须与父下拉框的实际HTML id 属性完全一致。

  • 右键查看页面中父下拉框的HTML源码,确认其id是否为clientid(若页面使用了模型前缀或表单分组,ID可能会被自动拼接,比如model_clientid)。
  • 若ID不匹配,可在父控件中显式指定ID:
    @(Html.Kendo().DropDownListFor(p => p.clientid)
        // ...其他配置
        .HtmlAttributes(new { id = "clientid", style = "width:100%", required = "required" })
    )
    

2. 验证参数传递与后端接收是否一致

确保前端传递的参数能被后端接口正确接收:

  • 打开浏览器F12开发者工具→Network→XHR标签,选择父下拉框选项后,观察子控件发送的GetParentOrgMAll请求:
    • 确认请求中是否包含clientid参数,且参数值正确。
  • 检查后端GetParentOrgMAll方法的参数定义,确保参数名称、类型与前端一致:
    // 示例:后端参数需与前端传递的键名一致
    public IActionResult GetParentOrgMAll(int? clientid)
    {
        // 业务逻辑
    }
    
    若后端参数名不同,需修改前端filterClientsg函数的返回键名,或调整后端参数名。

3. 确认字段名大小写匹配

.NET Core默认JSON序列化会将C#的PascalCase字段转为camelCase(如MClientId→mClientId),需确保控件配置的字段名与API返回的JSON字段一致:

  • 查看API返回的JSON数据结构,若字段为小写开头,需修改控件的DataValueField和DataTextField:
    @(Html.Kendo().DropDownListFor(p => p.orgid)
        .DataValueField("mOrgId") // 对应JSON中的mOrgId
        .DataTextField("orgName") // 对应JSON中的orgName
        // ...其他配置
    )
    
  • 或在后端配置保持PascalCase序列化(Program.cs/Startup.cs):
    builder.Services.AddControllersWithViews()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNamingPolicy = null;
        });
    

4. 手动测试级联触发逻辑

若以上步骤无效,可手动绑定父控件的Change事件触发子控件数据刷新,验证是否为CascadeFrom配置问题:

$("#clientid").on("change", function() {
    $("#orgid").data("kendoDropDownList").dataSource.read();
});

若手动调用能正常加载数据,说明CascadeFrom的目标ID仍存在匹配问题。

你提供的代码参考

@(Html.Kendo().DropDownListFor(p => p.clientid)
    .DataValueField("MClientId")
    .DataTextField("ClientName")
    .DataSource(model => model.Read(m => m.Action("GetAllClientM", "Home")))
    .OptionLabel("--Select--")
    .HtmlAttributes(new { style = "width:100%", required = "required", id = "clientid" })
)

@(Html.Kendo().DropDownListFor(p => p.orgid)
    .DataValueField("MOrgId")
    .DataTextField("OrgName")
    .DataSource(model => model.Read(m => m.Action("GetParentOrgMAll", "Home").Data("filterClientsg")))
    .OptionLabel("--Select--")
    .HtmlAttributes(new { @class = "custom-box-shadow", style = "width: 100%" })
    .CascadeFrom("clientid")
)

function filterClientsg() {
    return {
        clientid: $("#clientid").val()
    };
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:43:19