我正在使用一个启用了服务器过滤的kendo网格,网格调用一个数据源,这是一个web api控制器,它接受一个自定义Model绑定器(通过实现IModelBinder),它对Odata结果进行自定义排序和分页。现在,当使用某些过滤器选项时,我发现了问题。
请注意我已经修复了' substringof'的问题,因为使用odata v4的网络服务不再承认解释为here的substringof函数。我尝试在网格配置中指定odata-v4,但这也不起作用。因此最终转换过滤器以替换' substringof'到'包含'在自定义模型绑定器
中以下网址的工作请求工作并返回数据
http://localhost:63455/api/data/gethistory $顶部= 5&安培; $滤波器=(同上+当量+ 1 +和+ PaymentId +当量+ 11) ?http://localhost:63455/api/data/gethistory $顶部= 5&安培; $滤波器=(同上+当量+ 1 +和+ PaymentId + GT + 11) ?http://localhost:63455/api/data/gethistory $顶部= 5&安培; $滤波器=(同上+当量+ 1 +和+ PaymentId + LT + 11)
以下网址不起作用请求工作并返回异常。这大于或等于,小于或等于和不等于过滤器。
http://localhost:63455/api/data/gethistory $顶部= 5&安培; $滤波器=(同上+当量+ 1 +和+ PaymentId + GE + 11) ?http://localhost:63455/api/data/gethistory $顶部= 5&安培; $滤波器=(同上+当量+ 1 +和+ PaymentId +了+ 11) ?http://localhost:63455/api/data/gethistory $顶部= 5&安培; $滤波器=(同上+当量+ 1 +和+ PaymentId + NE + 11)
{"消息":"发生错误。"," ExceptionMessage":"预期 RightParenthesis"" ExceptionType":" Kendo.Mvc.Infrastructure.Implementation.FilterParserException""堆栈跟踪":" 在 Kendo.Mvc.Infrastructure.Implementation.FilterParser.Expect(FilterTokenType tokenType)\ r \ n at Kendo.Mvc.Infrastructure.Implementation.FilterParser.ParseNestedExpression(个)\ r \ n 在 Kendo.Mvc.Infrastructure.Implementation.FilterParser.PrimaryExpression(个)\ r \ n 在 Kendo.Mvc.Infrastructure.Implementation.FilterParser.ComparisonExpression(个)\ r \ n 在 Kendo.Mvc.Infrastructure.Implementation.FilterParser.AndExpression(个)\ r \ n 在 Kendo.Mvc.Infrastructure.Implementation.FilterParser.OrExpression(个)\ r \ n 在 Kendo.Mvc.Infrastructure.Implementation.FilterParser.Expression(个)\ r \ n 在Kendo.Mvc.Infrastructure.Implementation.FilterParser.Parse()\ r \ n
在Kendo.Mvc.Infrastructure.FilterDescriptorFactory.Create(String 输入)\ r \ n at RequestModelBinder.BindModel(HttpActionContext actionContext,ModelBindingContext bindingContext)