当前位置: 首页> 科技> 互联网 > 教学网页制作_河南省住房和城乡建设厅电话_aso推广公司_数字营销课程

教学网页制作_河南省住房和城乡建设厅电话_aso推广公司_数字营销课程

时间:2025/7/15 5:25:58来源:https://blog.csdn.net/dystocia/article/details/142519537 浏览次数:4次
教学网页制作_河南省住房和城乡建设厅电话_aso推广公司_数字营销课程

需求:前端按照格式传递查询条件参数,后端自动解析。

前端参数格式:[{"f":"","v":"","o":"","t":"",}]。

参数f:参数名。

参数v:参数值。

参数o:=(默认)、<、<= 、>、>=、like、bt  指between。

参数t:搜索控件类型:tx:文本框 text(默认);ta:副文本框 textarea;tm:时间 time;dt:日期 date;dm:日期时间 datetime;dr:时间范围 daterang;sl:下拉选项 select。

例如想查询名称叫张三的:[{“f”:"name","val":"张三"}]

对应 的类结构:

public class TFilter
{/// <summary>/// field/// </summary>public string f { get; set; } //过滤的关键字/// <summary>/// value/// </summary>public string v { get; set; } //过滤的值/// <summary>///操作符 operator///=///<///<= ///>///>=///like///bt  指between/// </summary>public string o { get; set; }///// <summary>/// 搜索控件类型/// tx:文本框 text/// ta:副文本框 textarea/// tm:时间 time/// dt:日期 date/// dm:日期时间 datetime/// dr:时间范围 daterang/// sl:下拉选项 select/// </summary>public string t { get; set; }}

前端根据form表单生成查询参数(也可以自动根据需求实现)


/*序列化成[{f:"",v:"",o:""}],用于条件过滤
//2020-01-22*/
Object.defineProperty(Object.prototype, 'toFilter', {configurable: true,enumerable: false,writable: false,value: function (o) {var json = [];var $form = this;var $array = $form.querySelectorAll("input,select,textarea,[name]");$array.forEach(function (item, index) {var $this = item;var type = item.type ? item.type.toLowerCase() : "div";var name = item.getAttribute("name");if (!name) {name = item.getAttribute("id");}if (!name) { return; }var targetName = item.nodeName;var val = item.value.trim();if (!val) {return;}if (targetName === "INPUT" || targetName === "SELECT" || targetName === "SELECT-ONE" || targetName === "SELECT-MULTEITY" || targetName === "TEXTAREA") {json.push({ "f": name, "v": val, "o": item.dataset.o ? item.dataset.o : "=", "t": item.dataset.t ? item.dataset.t : "tx" });}});return json;}
});

扩展Where方法

    public static ISugarQueryable<T> Where<T>(this IQueryable<T> query, TFilter[] filters,string LambdaParam ="c"){if (filters == null || filters.Length == 0){return query;}var param = DynamicLinq.CreateLambdaParam<T>(LambdaParam);Expression body = Expression.Constant(true); //初始默认一个trueforeach (var filter in filters){Expression condition = param.GenerateBody<T>(filter);if (condition == null) continue;body = body.AndAlso(condition); //这里可以根据需要自由组合}var lambda = param.GenerateTypeLambda<T>(body); //最终组成lambdareturn query.Where(lambda);}

使用演示:

List<TFilter>   filters= ...;

 dbQuery.Where(filters);

关键字:教学网页制作_河南省住房和城乡建设厅电话_aso推广公司_数字营销课程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: