- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态多条件查询页以及排序(一)--MVC与Entity Framework版url分页版
因为此设置被禁用,所订阅的源没有被自动更新。
打开自动源更新
您已成功订阅此源!
可以在 Internet Explorer 及使用“常见源列表”的其他程序中查看更新内容。
查看我的源
您已成功订阅此源!
博客园_
您正在查看的源包含频繁更新的内容。订阅源后,该源会添加到“常见源列表”中。该源的更新信息会自动下载到计算机,通过 Internet Explorer 及其他程序可以查看这些信息。进一步了解源。
订阅该源
博客园_
年月日,
动态多条件查询分页以及排序 一 --MVC与Entity Framework版url分页版
年月日,
一.前言
二.目前状况
不论是 还是EF 在做多条件搜索时 都有这类似的代码
这样有几个不好的地方
1.当增加查询条件,需要改代码,对应去写相应的代码。
2.对多表查询以及or的支持 不是很好。而我们很常见的需求不可能是一个表的查询
3. 这样写表示层直接出现 了SQL语句 或者 linq 的拉姆达表达式 这是很不好的 表示层不应该知道数据访问技术
4.有的时候 我们的业务逻辑层接口是这样的 IList *** seach string name,string age,string classname,int pageindex,int pagesize,string oderby
这个时候 多一个查询条件 对应的还要去修改业务逻辑层 EF由于传递的是表达式树,则更是苦不堪言.
三.我们接下来应该实现的目标
1.当增加条件时 不需要修改代码 只需要在view上 增加相应的查询框即可
2.我们的多条件查询 应该做到无关表示层技术 是否是MVC或webform
3.应该支持多表查询 以及OR的操作
4.应该支持更多的查询 like in 不等于 等操作
5.关于分页 不应该与数据访问耦合在一起 个人感觉 分页只需要知道总条数 以及当前页数 和每页多少条 然后生成分页代码即可 不应该与EF等耦合到一起 分页应该是独立出来 可控制的
6.客户可以自己添加搜索条件 这是个强大的功能 想怎么查 客户自己添加即可
7. 统一查询接口 做到有条件增加 不修改代码
8.分页应该支持 url重写或者 mvc路由 不应该生成的连接只是?pageindex 值 这种的
四.我实现的几个多条件查询分页版本以适应各种需求 每篇会写一个版本的实现以及代码的提供,有好意见的欢迎留言
1.url get提交版 实现URL分页多条件查询以及排序的好处是 我们可以把当前的搜索条件 当前页数 排序等 都在url上显示 可以方便的发给好友 以及后退等浏览器操作 个人给dudu老大建议,博客园应该做成这种的
2.post 提交版本的 搜索条件较大 不适合用url的
3.ajax+mvc版本的 关于AJAX实现 我认为有两种 1.服务端实现好内容的拼接,传输给客户端 2直接传递json给客户端 客户端来做拼接
这个版本会实现服务端拼接内容 好处是 服务端做拼接简单 能做更多的事情 维护服务端代码方便 尤其是强大的Razor
4.ajax+webapi+Knockoutjs 版本
这个版本 我实现的是 服务端只是传递 json 这样服务端效率很高 喜欢这样开发方式的朋友 就是前端拼接字符是很不好的 代码会显得很乱 这个时候 前端就需要一个模版引擎我用的是 jquery-temp 配合强大的Knockoutjs
5.动态增加查询条件版
这个版本我实现的是 客户可以自己添加查询条件 查询条件是动态的
6.移植到webform版
7.EF应该得到表达式树 让EF自己生成SQL语句 这样方便扩展 实现其他方法
五.url get提交版开始
废话了那么多 今天就写下url get版的多条件查询 以及分页 排序
先上个丑陋界面的截图 界面虽丑 但是功能齐全 查询 分页 排序齐全
看下控制器的代码
我们这里没有各种条件判断 判断哪个为空 使用哪个排序的判断 我们的业务逻辑层接口 没有接受表达式树的参数 与数据访问层不是耦合的 而是使用了Querymodel对象 来抽象所有查询条件
这样 这个对象 可以翻译成 EF的表达式树 也可以翻译成SQL语句 所以我们的 表示层MVC 不用非要使用EF的的底层
而我们的分页 只需要知道当前页数 总数据 以及 每页大小 去自动生成分页
关于分页 很多人喜欢把这个扩展htmlhelper 做成 html.pager 这种做法 这样很多表示层的展示 都会耦合到 这个里面 举个例子,比如把分页的布局 从 table 变成 ul 这样的 这是纯表示层的
本应该修改 view 现在却要去改htmlhelper 而且你的分页代码越强大 则htmlhelper 里的内容越多 修改起来越不容易 所以我的意见是 做
您可能关注的文档
最近下载
- 五年级下-1000道口算.docx VIP
- 2025年中国四氯化锆项目投资计划书.docx
- 病原微生物实验室生物安全风险管理指南RB∕T 040-2020.doc
- 2025年艺术学概论.pdf VIP
- 【精校版】2025年高考天津卷政治试题(Word版含答案).doc VIP
- 初中历史 2023-2024学年广西河池市金城江区九年级(上)期中历史试卷.pdf VIP
- 《2 欢快流畅的线》教学设计2024-2025学年小学美术一年级上册人美版(2024).docx VIP
- 2023北京八十中初二(上)期中语文(含答案).pdf VIP
- 自考10177《设计基础》考前复习重点(保密资料).pdf VIP
- 戒烟门诊服务及创建.pptx VIP
文档评论(0)