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

Kendo DropDownList始终向控制器传递相同值问题咨询

嗨,我来帮你搞定这个Kendo DropDownList总是传相同值的问题!结合你给出的子网格代码片段,大概率是模板渲染时的ID冲突或者绑定上下文出了问题,下面给你一步步拆解排查方向和解决办法:

可能的原因与解决方案

1. 子网格中DropDownList的ID重复问题

因为子网格是通过模板循环渲染的,如果每个DropDownList的Name/ID是固定值,就会导致DOM元素ID重复——浏览器只会识别第一个实例,后续所有行的DropDownList都会复用第一个的值。

  • 解决办法:给DropDownList的Name属性加上子网格的唯一标识(比如你的#=acrpr_id#),确保每个实例的标识唯一:
columns.ForeignKey(c => c.acr_function, StaticList...)
    .EditorTemplateName("CustomFunctionDropDown")
    .ClientTemplate("#: acr_functionText #"); // 显示文本用客户端模板

在对应的编辑器模板(CustomFunctionDropDown.cshtml)里,动态生成Name:

@(Html.Kendo().DropDownList()
    .Name("acr_function_#=acrpr_id#") // 用子网格的唯一ID做后缀,避免重复
    .DataTextField("Text")
    .DataValueField("Value")
    .BindTo(ViewBag.FunctionOptions)
)

2. 模型绑定的上下文丢失问题

子网格的行数据没有正确关联到当前编辑行的模型,导致提交时总是取到第一行的DropDownList值。

  • 解决办法:确保子网格的DataSource正确配置主键,并且编辑时强制绑定当前行的模型值:
.DataSource(dataSource => dataSource
    .Ajax()
    .Model(model => model.Id(p => p.acp_id)) // 必须设置主键,确保行数据唯一
    .Update(update => update.Action("UpdateAccrualDetail", "YourController"))
)
.Events(events => events.Edit("onSubGridEdit")) // 绑定编辑事件

对应的JS函数,手动同步DropDownList和当前行模型:

function onSubGridEdit(e) {
    // 通过前缀匹配找到当前行的DropDownList
    var dropdown = e.container.find("[name^='acr_function']").data("kendoDropDownList");
    if (dropdown) {
        dropdown.value(e.model.acr_function); // 强制绑定当前行的模型值
    }
}

3. 静态列表的缓存或动态适配问题

如果你的StaticList是页面加载时一次性绑定的,没有根据子网格行的不同做动态调整,也可能导致值异常。

  • 解决办法:如果不同行的DropDownList选项需要差异化,在编辑事件里重新拉取对应数据源:
function onSubGridEdit(e) {
    var dropdown = e.container.find("[name^='acr_function']").data("kendoDropDownList");
    // 根据当前行的acrpr_id请求对应的选项列表
    $.get("/YourController/GetFunctionOptions?acrprId=" + e.model.acrpr_id, function(data) {
        dropdown.setDataSource(data);
        dropdown.value(e.model.acr_function);
    });
}
额外检查点
  • 打开浏览器F12开发者工具,切换到Network标签,查看提交请求的FormData,确认acr_function字段值是否真的重复;
  • 检查子网格每一行的DropDownList DOM元素,确认它们的name属性是唯一的;
  • 核对模型类AccrualProfileDetailsModel中的acr_function字段,确保没有被[NotMapped]等特性影响绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:10:39