如何在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
相关产品推荐
相关产品推荐

