ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

webdiyer 2013-09-16 04:18:45
加精
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。谢谢支持!
...全文
6534 82 打赏 收藏 转发到动态 举报
写回复
用AI写文章
82 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑子大哥 2014-02-27
  • 打赏
  • 举报
回复
LZ,这个控件貌似是你开发的吧,我在你博客下载使用过,好像不能支持伪静态呢?mvc路由自定义之后没办法自动以分页格式呢
朗晴 2014-02-25
  • 打赏
  • 举报
回复
关注
blueteethlele 2014-02-25
  • 打赏
  • 举报
回复
引用 74 楼 tczhoulan 的回复:
我在view中添加了@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}但是没有生成<script type="text/javascript" src="/WebResource.axd?d=li69eidDIgjgY0UVyDCOTRYWkOlfzv_8cHcZN_Tlf_4yXiZzApbVLPO6xgKQI5OxaZUtoFcoPhvaasM4OU5nJTqhJQJp3KOFSO4FsMw_4-GisBLXQEUpSLDROc-VZJ5nzV-fDAb8cGfJI86Lc906Dw2&t=635149429410260000"></script>这段代码,请问这可能是因为什么原因造成的。
我也遇到这个问题,请问下怎么解决的?
blueteethlele 2014-02-25
  • 打赏
  • 举报
回复
引用 79 楼 webdiyer 的回复:
[quote=引用 77 楼 blueteethlele 的回复:] [quote=引用 74 楼 tczhoulan 的回复:] 我在view中添加了@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}但是没有生成<script type="text/javascript" src="/WebResource.axd?d=li69eidDIgjgY0UVyDCOTRYWkOlfzv_8cHcZN_Tlf_4yXiZzApbVLPO6xgKQI5OxaZUtoFcoPhvaasM4OU5nJTqhJQJp3KOFSO4FsMw_4-GisBLXQEUpSLDROc-VZJ5nzV-fDAb8cGfJI86Lc906Dw2&t=635149429410260000"></script>这段代码,请问这可能是因为什么原因造成的。
我也遇到这个问题,请问下怎么解决的?[/quote] 父页面layout中有Scripts这个section吗?[/quote] 刚试过了,在layout里面引用了,jquery用的1.8.3.min.js,还是出现同样的错误
blueteethlele 2014-02-25
  • 打赏
  • 举报
回复
引用 79 楼 webdiyer 的回复:
[quote=引用 77 楼 blueteethlele 的回复:] [quote=引用 74 楼 tczhoulan 的回复:] 我在view中添加了@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}但是没有生成<script type="text/javascript" src="/WebResource.axd?d=li69eidDIgjgY0UVyDCOTRYWkOlfzv_8cHcZN_Tlf_4yXiZzApbVLPO6xgKQI5OxaZUtoFcoPhvaasM4OU5nJTqhJQJp3KOFSO4FsMw_4-GisBLXQEUpSLDROc-VZJ5nzV-fDAb8cGfJI86Lc906Dw2&t=635149429410260000"></script>这段代码,请问这可能是因为什么原因造成的。
我也遇到这个问题,请问下怎么解决的?[/quote] 父页面layout中有Scripts这个section吗?[/quote] 父页面没有引用,但是当前页面我引用了。是因为这个原因吗?我试试
webdiyer 2014-02-25
  • 打赏
  • 举报
回复
引用 77 楼 blueteethlele 的回复:
[quote=引用 74 楼 tczhoulan 的回复:] 我在view中添加了@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}但是没有生成<script type="text/javascript" src="/WebResource.axd?d=li69eidDIgjgY0UVyDCOTRYWkOlfzv_8cHcZN_Tlf_4yXiZzApbVLPO6xgKQI5OxaZUtoFcoPhvaasM4OU5nJTqhJQJp3KOFSO4FsMw_4-GisBLXQEUpSLDROc-VZJ5nzV-fDAb8cGfJI86Lc906Dw2&t=635149429410260000"></script>这段代码,请问这可能是因为什么原因造成的。
我也遇到这个问题,请问下怎么解决的?[/quote] 父页面layout中有Scripts这个section吗?
天殇月痕 2014-01-22
  • 打赏
  • 举报
回复
一直在用~谢谢楼主
一枚小菜 2014-01-22
  • 打赏
  • 举报
回复
好东东!收藏!
哈喽沃的 2014-01-21
  • 打赏
  • 举报
回复
我在view中添加了@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}但是没有生成<script type="text/javascript" src="/WebResource.axd?d=li69eidDIgjgY0UVyDCOTRYWkOlfzv_8cHcZN_Tlf_4yXiZzApbVLPO6xgKQI5OxaZUtoFcoPhvaasM4OU5nJTqhJQJp3KOFSO4FsMw_4-GisBLXQEUpSLDROc-VZJ5nzV-fDAb8cGfJI86Lc906Dw2&t=635149429410260000"></script>这段代码,请问这可能是因为什么原因造成的。
木子木啊 2014-01-16
  • 打赏
  • 举报
回复
有让我学习了一回啊。
马老虎 2014-01-16
  • 打赏
  • 举报
回复
吴起娃 厉害!
哈喽沃的 2014-01-16
  • 打赏
  • 举报
回复
@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}这句代码要在哪里引入,要不要添加什么文件?
webdiyer 2014-01-16
  • 打赏
  • 举报
回复
引用 67 楼 tczhoulan 的回复:
这个查询都要引入哪些文件啊,我看你的源码中jquery并没有引入啊
jQuery是在layout中引入的,所有页面都用
webdiyer 2014-01-16
  • 打赏
  • 举报
回复
引用 69 楼 tczhoulan 的回复:
@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}这句代码要在哪里引入,要不要添加什么文件?
不需要引入其它文件,参见:http://www.webdiyer.com/mvcpager/docs/scriptresourceextensions/
webdiyer 2014-01-16
  • 打赏
  • 举报
回复
引用 69 楼 tczhoulan 的回复:
@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}这句代码要在哪里引入,要不要添加什么文件?
当需要使用页索引输入或下拉框以及使用Ajax分页模式时,必须用Html.RegisterMvcPagerScriptResource方法注册MvcPager客户端jQuery插件,不注册此插件则选择或输入页索引后将无法跳转,Ajax功能也无法正常运行。
哈喽沃的 2014-01-15
  • 打赏
  • 举报
回复
这个查询都要引入哪些文件啊,我看你的源码中jquery并没有引入啊
哈喽沃的 2014-01-15
  • 打赏
  • 举报
回复
我就是按照你的网上的源码贴上去的,就是不能实现局部刷新啊
webdiyer 2014-01-15
  • 打赏
  • 举报
回复
引用 64 楼 tczhoulan 的回复:
你好我在vs2013下用mvcpager2.0时用ajax.pager方法无法实现局部刷新,是不是该插件在mvc5下还无法运行?
可以的,我的主页 http://www.webdiyer.com 就是MVC5,其中的MvcPager示例没有任何问题。
哈喽沃的 2014-01-15
  • 打赏
  • 举报
回复
你好我在vs2013下用mvcpager2.0时用ajax.pager方法无法实现局部刷新,是不是该插件在mvc5下还无法运行?
xy3212158 2013-11-28
  • 打赏
  • 举报
回复
好渣,控件都生成不出来???
加载更多回复(54)

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧