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

如何在Kendo UI的Read方法中同时传递模型与JS函数参数

我来帮你搞定这个问题!要同时传递Kendo Grid模型里的LocCode和JS函数中的额外参数,还能把LocCode传入JS方法,其实有几种简洁且易维护的实现方式,我给你一步步拆解:

解决方案:同时传递模型参数与JS函数参数

方法1:直接将模型参数传入JS函数

Kendo Grid的.Data()方法支持传递当前上下文的模型参数,你只需要在调用JS函数时把LocCode传进去,再在函数里整合所有参数即可:

首先修改Grid的Read配置:

.Read(read => read.Action("CPos_Read", "Reporting").Data("function() { return GetFilters('#=LocCode#'); }"))

然后更新你的GetFilters函数,接收locCode参数,直接返回键值对对象(这种格式ASP.NET MVC控制器能自动解析绑定,比数组更省心):

function GetFilters(locCode) {
    return {
        LocCode: locCode,
        DateStart: $('#DateStart').val(),
        DateEnd: $('#DateEnd').val()
    };
}

对应的控制器方法可以直接接收这些参数:

public ActionResult CPos_Read(string LocCode, string DateStart, string DateEnd)
{
    // 你的业务处理逻辑
}

方法2:通过Grid事件存储模型参数(更灵活的场景)

如果需要在更多场景复用LocCode,可以通过Grid的dataBinding事件把参数存到Grid的自定义属性中,再在GetFilters里读取:

// 初始化Grid时绑定dataBinding事件
$("#yourGridId").kendoGrid({
    // 其他Grid配置...
    dataBinding: function(e) {
        // 将当前模型的LocCode存入Grid的自定义数据属性
        this.data("currentLocCode", "#=LocCode#");
    },
    dataSource: {
        read: {
            url: "@Url.Action("CPos_Read", "Reporting")",
            data: GetFilters
        }
    }
});

// 修改GetFilters函数读取存储的参数
function GetFilters() {
    var locCode = $("#yourGridId").data("currentLocCode");
    return {
        LocCode: locCode,
        DateStart: $('#DateStart').val(),
        DateEnd: $('#DateEnd').val()
    };
}

小提示:放弃数组格式的传参

你之前用ParamList数组拼接参数的方式,控制器解析起来需要额外处理,直接返回键值对对象,MVC框架会自动完成参数绑定,大幅减少后续的维护成本。


内容的提问来源于stack exchange,提问作者B.Hawkins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:23:50