使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然须要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,仍是这么用。分页的逻辑原本就不复杂,更重要的是最近发现了Flurl这个开源库,因此采用Flurl制做一个DIY的分页组件,核心是PagingModel文件,算法可能不是最优,但包含了主要的逻辑和实现关键点。因为在查询方面,我使用如下实践:html
1.使用ViewModel封装查询参数git
2.使用ViewModel做为View的Model类型github
3.采用表单的GET方式提交查询到Action算法
4.直接设置Url的参数提交查询到Action数据库
所以自制的分页组件也在上述环境下应用。原本计算将查询和分页写在一块儿,可是为了便于独立演示分页仍是将分页部分独立出来。post
同时实现了IvalidatableObject接口,检查PageSize异常。一些默认的参数能够配置成从配置文件(在ASP.NET MVC 系列:文件上传的Demo有相关的代码)或配置数据库中读取。url
能够对类库再次保证,引用ASP.NET MVC,这样能够直接返回SelectList对象。spa
Action:.net
View:3d
(1)靠近首页和末页的连接数不足时,会向中间补全。博客园的导航就只处理了靠近首页部分,没有正确处理末页部分。
(2)默认PageIndex和PageSize不会添加参数。Url中参数为空时会自动过滤掉。
更新:支持调用自定义Razor模板
代码已经上传到gitosc:http://git.oschina.net/myshare/AspNetPaging
组件已经上传到nuget:https://www.nuget.org/packages/AspNetPaging/