MvcPager分页控件 适用于Bootstrap

发布时间 - 2026-01-11 01:40:43    点击率:

软件开发分页效果必不可少,对于Asp.Net MVC 而言,MvcPager 是个不错的选择。

请访问http://www.webdiyer.com/mvcpager/

由于自带的分页样式不能和项目整体风格兼容,所以我们准备改写源代码,使其能够使用Bootstrap 的分页样式。

先来查看两种分页的html代码

Bootstrap 样式:

<ul class="pagination">
 <li class="disabled"><a href="#">«</a></li>
 <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
 ...
 </ul> 

一个ul标签,li 下面有一个a 标签.

MvcPager 样式:

<!--MvcPager v2.0 for ASP.NET MVC 4.0+ © 2009-2013 Webdiyer (http://www.webdiyer.com)-->
<div data-maxpages="5" data-mvcpager="true" data-pageparameter="id" data-urlformat="/mvcpager/demo/basic/__id__/"><a disabled="disabled">首页</a>&nbsp;&nbsp;<a disabled="disabled">上一页</a>&nbsp;&nbsp;1&nbsp;&nbsp;<a href="/mvcpager/demo/basic/2/">2</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/3/">3</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/4/">4</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/5/">5</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/2/">下一页</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/5/">尾页</a>&nbsp;&nbsp;<select data-pageindexbox="true" data-autosubmit="true"><option value="1" selected="selected">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select></div>
<!--MvcPager v2.0 for ASP.NET MVC 4.0+ © 2009-2013 Webdiyer (http://www.webdiyer.com)-->

这里就比较简单了,一个div 下只有a 标签.

 那么问题来了,我们该怎么修改源码来达到Bootstrap 分页效果呢?

1、到官网下载MvcPager 源代码

2、开始研究html 生成规则.

 这两步笔者已经帮你做了,下面跟我一起来做修改.

  通过代码调试跟踪和查看源码注释,我们知道了最终的HTML 呈现是在PagerBuilder.cs 下的RenderPager() 方法.

 var sb = new StringBuilder();
  if (_ajaxPagingEnabled)
  {
  foreach (PagerItem item in pagerItems)
  {
   //修改前
   //sb.Append( GenerateAjaxPagerElement(item) );
   //修改后
   sb.Append("<li>" + GenerateAjaxPagerElement(item) + "</li>");
  }
  }
  else
  {
  foreach (PagerItem item in pagerItems)
  {
   //修改前
   //sb.Append( GeneratePagerElement(item) );
   //修改后
   sb.Append("<li>" + GeneratePagerElement(item) + "</li>");
  }
  }

  修改以上代码以获得li标签。由于ul标签是最后加上去的所以我们在这里修改:

if (_pagerOptions.ShowPageIndexBox)
  {
  if (!_ajaxPagingEnabled)
  {
   var attrs = new Dictionary<string, object>();
   AddDataAttributes(attrs);
   tb.MergeAttributes(attrs, true);
  }
  sb.Append(BuildGoToPageSection());
  }
  else
  sb.Length -= _pagerOptions.PagerItemsSeperator.Length;
  //修改前
  // tb.InnerHtml = sb.ToString() ;
  //修改后,为ul加上class='pagination'以获得boostrap 分页样式
  tb.InnerHtml = "<ul class='pagination'>" + sb.ToString() + "</ul>";

    有了以上还不行,还需要为当前页增加样式,

    修改后的GenerateAjaxAnchor(PagerItem item) 方法为:

 private string GenerateAjaxAnchor(PagerItem item)
 {
  string url = GenerateUrl(item.PageIndex);
  if (string.IsNullOrWhiteSpace(url))
   //这里直接假的行内样式,可以使用class替换掉
  return "<a style='z-index:2;color:#fff; cursor: default; border-color: #428bca;' disabled='disabled'>" + item.Text + "</a>";
  //return HttpUtility.HtmlEncode(item.Text);
  var tag = new TagBuilder("a") { InnerHtml = item.Text };
  tag.MergeAttribute("href", url);
  tag.MergeAttribute("data-pageindex", item.PageIndex.ToString(CultureInfo.InvariantCulture));
  //修改后,添加了li标签
  return "<li>" + tag.ToString(TagRenderMode.Normal) + "</li>";
 }

 对源代码的修改就是这么多了,我们一起看看效果.

  中文版效果:

英文版效果(同样是修改源码,增加了对英文的支持):

源码下载:MvcPager分页控件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# MvcPager  # 分页  # Bootstrap  # 源代码  # 是个  # 是在  # 来了  # 在这里  # 下一页  # 上一页  # 这么多  # 两种  # 英文  # 尾页  # 使其  # 可以使用  # 来做  # 自带  # 你做  # 该怎么  # 我们一起  # 英文版 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解阿里云nginx服务器多站点的配置  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Bootstrap整体框架之CSS12栅格系统  JavaScript如何实现类型判断_typeof和instanceof有什么区别  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel如何使用模型观察者?(Observer代码示例)  南京网站制作费用,南京远驱官方网站?  如何在Windows 2008云服务器安全搭建网站?  如何用y主机助手快速搭建网站?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Java解压缩zip - 解压缩多个文件或文件夹实例  Laravel如何与Inertia.js和Vue/React构建现代单页应用  利用JavaScript实现拖拽改变元素大小  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel如何实现文件上传和存储?(本地与S3配置)  详解Oracle修改字段类型方法总结  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  深圳网站制作的公司有哪些,dido官方网站?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  javascript中的try catch异常捕获机制用法分析  网站优化排名时,需要考虑哪些问题呢?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何快速查询网址的建站时间与历史轨迹?  详解Android——蓝牙技术 带你实现终端间数据传输  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何快速登录WAP自助建站平台?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  如何在云服务器上快速搭建个人网站?  如何基于PHP生成高效IDC网络公司建站源码?  Laravel如何使用withoutEvents方法临时禁用模型事件  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Android实现代码画虚线边框背景效果  Python结构化数据采集_字段抽取解析【教程】  微信公众帐号开发教程之图文消息全攻略  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转