MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList<T>类和相关方法,经过站长不断完善和改进后推出的比较成熟而且功能强大的ASP.NET MVC分页解决方案。

MvcPager主要功能:

实现最基本的url route分页功能;
支持手工输入或选择页索引并对输入的页索引进行有效性验证;
支持使用jQuery实现Ajax分页,生成的Html代码更精简;
Ajax分页模式下支持在分页过程中通过GET或POST方法提交表单数据,实现查询功能;
Ajax分页模式下支持浏览器历史记录功能(暂不支持IE7及早期版本和Opera浏览器);
Ajax分页模式下,若客户端浏览器不支持或禁用Javascript功能时优雅降级为普通分页
搜索引擎友好,无论是普通分页还是Ajax分页,搜索引擎都可以直接搜索到所有页面。
支持最新的ASP.NET MVC 4.0 和 5.0 RC1;
支持IE、Firefox、Opera、Chrome及Safari等常用浏览器;

MvcPager 2.0版在原1.5版的基础上进行了比较大的升级,重写了大量代码,新增了不少功能,优化了最终生成的html代码,尤其是在Ajax分页模式下,最终生成的html代码比1.5版减少了二倍以上,且html代码更符合html 5规范,主要更新说明如下:
新增 IPagedList<T>接口;
新增 DisplayNameFor HtmlHelper扩展方法使其支持 IPagedList<T>和PagedList<T>;
Ajax分页模式时浏览器历史记录支持(暂不支持IE7以下及Opera浏览器,下一版本中完善);
Ajax分页模式下支持在分页过程中,通过GET和POST自动提交查询条件,实现多条件查询功能;
ToPagedList扩展方法新增了当前页索引超出总页数时改变当前页索引为最后一页的页索引,同时返回最后一页数据的功能;
当MvcPager当前使用的路由定义中页索引参数的默认值为UrlParameter.Optional或页索引参数在路由参数中不存在时,生成的首页url将自动移除页索引参数,使其与默认首页url保持一致,利于SEO优化;
PagerOptions新增FirstPageRouteName属性,指定第一页默认的路由名称,去掉页索引参数,优化SEO;
解决分页时url中中文参数被反复编码的bug。
移除PagerOptions.UseJqueryAjax属性;
PagerOptions的SeperatorHtml属性更名为PagerItemsSeperator;
移除HtmlHelper的AjaxPager扩展方法,Ajax分页模式统一使用AjaxHelper的Pager扩展方法,不再支持Microsoft Ajax,仅支持jQuery,与官方保持一致;
Ajax.Pager扩展方法不再接受AjaxOptions参数,改为MvcAjaxOptions,MvcAjaxOptions继承自AjaxOptions;
MvcAjaxOptions新增属性EnablePartialLoading,用于支持Ajax分页模式下局部加载功能;
MvcAjaxOptions新增属性DataFormId,用于标识在Ajax分页模式下,分页时向服务器端通过Ajax提交的数据所在的Form和ID,用于实现Ajax分页模式下的查询功能;
解决了PagerOptions.AlwaysShowFirstLastPageNumber为true时,第一页页索引按钮和更多页按钮显示不正确的问题;
新增了两个PagedList构造函数;
为IEnumerable<T>接口添加ToPagedList扩展方法;
新增HtmlHelper扩展方法RegisterMvcPagerScriptResource,用于注册MvcPager的客户端jQuery插件脚本;
MvcPager 2.0 for ASP.NET 4.0目标编译框架为.Net Framework 4.0,可用于目标框架为.Net Framework 4.0或4.5的ASP.NET MVC 4.0项目中;
取消对ASP.NET MVC 2.0的支持,仅支持ASP.NET MVC 3.0以上版本;

升级说明:

从MvcPager 1.5升级到2.0时,需注意以下事项:
原HtmlHelper的AjaxPager扩展方法已移除,需要改为使用AjaxHelper的Pager扩展方法;
当需要使用页索引输入或下拉框以及使用Ajax分页模式时,必须用Html.RegisterMvcPagerScriptResource方法注册客户端脚本,否则无法正常分页;
使用AjaxHelper的Pager扩展方法时,原AjaxOptions参数需改为MvcAjaxOptions;
PagerOptions的SeperatorHtml属性改为PagerItemsSeperator;
运行最低需求:

jQuery 1.7及以上版本;(仅当启用页索引输入或选择框以及使用Ajax分页模式时才必需)
ASP.NET MVC 4.0及以上版本;

2.0版已知问题:

Ajax分页模式下浏览器历史记录支持功能暂不支持IE7以下及Opera浏览器;
Url中值为空的参数在分页后将被从Url中去除;如:/articles/show/2?cls=news&type= 在分页后type参数将丢失,Url变为:/articles/show/3?cls=news
为AjaxForm使用Ajax分页查询功能时,web.config中的UnobtrusiveJavaScriptEnabled必须设为true(默认),否则会导致分页时数据被加载两次;

示例、文档及下载地址:http://www.webdiyer.com/mvcpager

最近实在太忙,源码还在整理中,暂未提供下载,将在英文版升级完成后同时发布到codeplex或github。谢谢支持!

ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版的更多相关文章

  1. MvcPager 免费开源分页控件3.0版发布!

    MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大 ...

  2. UrlPager免费分页控件2.0版发布!

    UrlPager是一个ASP.NET WebForm应用程序中通过url进行分页的分页控件,支持使用url路由来生成自定义的分页url.与AspNetPager不同,UrlPager需.NET Fra ...

  3. ASP.NET MVC中使用MvcPager异步分页+在分页中复选框下一页上一页也保持选中

    ASP.NET MVC 分页使用的是作者杨涛的MvcPager分页控件  地址:http://www.webdiyer.com/mvcpager/demos/ajaxpaging/ 这个分页控件在里面 ...

  4. ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页

    我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...

  5. 基于Bootstrap的Asp.net Mvc 分页

    基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...

  6. Mvc分页组件MvcSimplePager代码重构

    1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件M ...

  7. Mvc分页组件MvcSimplePager代码重构及使用

    1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件M ...

  8. ASP.NET MVC5写.php路由匹配时的问题 ASP.NET MVC 4 在 .NET 4.0 与.NET 4.5 的專案範本差異

    由于外包公司结束合作,所以考虑把其APP服务替换过来,因原后台是用php写的,在不影响员客户端使用的情况下在MVC下重写路由配置实现处理原php链接地址的请求,但实现时发现怎么也匹配不到自己写的路由, ...

  9. (转)ASP.NET MVC 第五个预览版和表单提交场景

    转自:http://ourlife.blog.51cto.com/708821/296171 上个星期四,ASP.NET MVC开发团队发布了ASP.NET MVC框架的“第五个预览版”.你可以在这里 ...

随机推荐

  1. VC++ CArchive及简单的文件操作方法

    CArchive 方法用于存取文件 我向你推荐的是使用CArchive,它的使用方法简单且功能十分强大.首先还是用CFile声明一个对象,然后用这个对象的指针做参数声明一个CArchive对象,你就可 ...

  2. cf730e

    一道数学题,这篇博客很好:http://blog.csdn.net/morejarphone/article/details/52926627(这样应该不算转载吧) 总结:做这类题目显然应该直接根据相 ...

  3. iOS有用的三方库

    DKNightVersion https://github.com/Draveness/DKNightVersion#podfile 用来为APP添加夜间模式和换肤功能

  4. quartz 框架定时任务,使用spring @Scheduled注解执行定时任务

    配置quartz 在spring中需要三个jar包: quartz-1.6.5.jar.commons-collections-3.2.jar.commons-logging-1.1.jar 首先要配 ...

  5. char、varchar、nchar、nvarchar的区别

    http://www.cnblogs.com/mekong/archive/2009/04/17/1437996.html

  6. Ansible学习笔记

    一.Ansible简介 Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 其特性有: ①模块化:通过调用相关模块,完成指定任 ...

  7. (转)tar.xz文件如何解压

    XZ压缩最新压缩率之王 xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数Linux默认就带的一个压缩工具. 之前xz使用一直很少,所以几乎没有什么提起. 我是在下载phpmyadmin的时候看到 ...

  8. js中常用的操作

    1.js中常用的数组操作 2.js中常用的字符串操作 3.js中常用的时间日期操作 4.定时器

  9. 在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()

    在子线程中new一个Handler为什么会报以下错误? java.lang.RuntimeException:  Can't create handler inside thread that has ...

  10. 01 Apache Solr:提升检索体验 为什么是Solr

    背景:      最近开发一个大型的仓储管理平台项目,项目的前身是无数个版本的历史悠久的基于CS模式的Windows桌面程序.然后对于每一个客户,我们可能需要为之定制比较个性化的特殊功能.于是,有一个 ...