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

Kendo行内网格Post请求传递隐藏字段:代码无效求解决方法

解决Kendo行内网格POST请求传递隐藏字段的问题

我之前也踩过这个坑——Kendo Grid里用columns.Bound(p => p.UserID).Hidden()确实经常没法把字段带到POST请求里,尤其是行内编辑的场景。这是因为这个方法只是隐藏了列的显示,但并没有把字段加入到编辑提交的表单数据中。这里有几个亲测有效的方案:

方案1:使用客户端模板渲染隐藏输入框

直接在列的配置里用ClientTemplate生成一个隐藏的input,这样提交时表单会自动带上这个字段:

columns.Bound(p => p.UserID)
       .ClientTemplate("<input type='hidden' name='UserID' value='#= UserID #' />")
       .Hidden(); // 可选,确保列不在网格中显示

这个方法简单直接,适合大多数场景,不管是新增还是编辑行,都会正确传递UserID的值。

方案2:利用Grid的Edit事件手动添加隐藏字段

如果需要动态处理字段值(比如编辑时要更新UserID),可以在Grid的edit事件里往编辑容器中插入隐藏输入:

$("#yourGridId").kendoGrid({
    // 其他网格配置(列、数据源等)
    edit: function(e) {
        // 创建隐藏输入并追加到编辑表单
        const hiddenInput = $("<input>").attr({
            type: "hidden",
            name: "UserID",
            value: e.model.UserID
        });
        e.container.append(hiddenInput);
    }
});

这个方法的灵活性更高,能根据编辑时的模型状态调整字段值。

方案3:在数据源Transport中手动附加参数

如果是通过数据源的create/update方法提交,可以直接在data回调里添加要传递的隐藏字段:

dataSource: {
    transport: {
        create: {
            url: "/YourController/Create",
            type: "POST",
            data: function() {
                // 获取当前行的UserID并返回
                const grid = $("#yourGridId").data("kendoGrid");
                return { UserID: grid.dataItem(grid.select()).UserID };
            }
        },
        update: {
            url: "/YourController/Update",
            type: "POST",
            data: function() {
                // 同理处理更新场景
                const grid = $("#yourGridId").data("kendoGrid");
                return { UserID: grid.dataItem(grid.select()).UserID };
            }
        }
    }
}

这个方法适合需要统一处理提交参数的场景,不过如果是批量编辑的话,需要调整逻辑来获取每一行的字段值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:18:08