asp.net-mvc – 过滤Kendo UI MVC Grid时的自定义谓词构建
发布时间:2020-12-16 09:53:45 所属栏目:asp.Net 来源:网络整理
导读:我正在使用带有服务器包装器的ASP.NET MVC的Kendo UI. IQueryable扩展方法ToDataSourceResult目前创建查询 myQuery.Where(x=x.SearchField.Contains(searchString)) 使用Contains运算符进行过滤时. 不幸的是我正在使用no-sql数据库RavenDb,它的linq提供程序
我正在使用带有服务器包装器的ASP.NET MVC的Kendo UI.
IQueryable扩展方法ToDataSourceResult目前创建查询 myQuery.Where(x=>x.SearchField.Contains(searchString)) 使用Contains运算符进行过滤时. 不幸的是我正在使用no-sql数据库RavenDb,它的linq提供程序不支持contains方法.相反,它为IQueryable提供了名为Search的扩展. myQuery.Search(x=>x.SearchField,searchString) 而是Where子句.这就是为什么我很好奇有没有机会覆盖默认谓词构建器? public static IQueryable<TEntity> ApplyFiltering<TEntity>(this IQueryable<TEntity> queryable,IList<IFilterDescriptor> filters) where TEntity:class { foreach (var filter in filters.Cast<FilterDescriptor>()){ var pe = Expression.Parameter(typeof(TEntity),"x"); var left = Expression.Property(pe,typeof(TEntity).GetProperty(filter.Member)); queryable = queryable.Search(Expression.Lambda<Func<TEntity,object>>(left,new ParameterExpression[] { pe }),filter.Value.ToString()); } filters.Clear(); return queryable; } //And controller code: public ActionResult Data_Read([DataSourceRequest] DataSourceRequest request) { var query = repository.GetQueryable(); query = query.ApplyFilters(request.Filters); return Json(query.ToDataSourceResult(request)); } 这是正确的解决方法吗?或者有更明显的解决方案,我在文档中找不到? 解决方法
有趣的问题.
我不认为Kendo MVC Wrappers中有任何可插入功能可以改变这一点. 但是,您也可以在github:KendoGridBinderEx上修改我的项目,看一下FilterObject.cs文件 更改代码: switch (op) { ... case "contains": exStr = string.Format("{0}{2}.Contains({1})",field,param,caseMod); break; ... 至 switch (op) { ... case "contains": exStr = string.Format("{0}{2}.Search({1})",caseMod); break; ... 如果有效,请告诉我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- System.Net.ServicePointManager.DefaultConnectionLimit和
- asp.net-mvc-3 – 您可以编辑CSHTML而无需再次构建
- asp.net – TransactionScope是否需要DTC服务?
- asp.net-mvc – ASP.NET MVC:从视图调用控制器方法
- Azure上的Asp.Net Core 2.0产生了502.5
- 将空白字段值传递给存储过程ASP .NET C#
- ASP.NET Core 2.1身份:如何删除默认UI剃刀页面?
- asp.net – 是否可以从ColdFusion引用.NET程序集?
- 如何知道asp.net 3.5 sp1和asp.net mvc是否安装在服务器中?
- asp.net – 在TextChanged上停止回发