利用ASP.NETMVC+Bootstrap搭建个人博客之打造清新分页Helper三

网络编程 ASP.NET 实用技巧 分类:[default] 更新日期: 2015-12-21
这篇文章主要介绍了利用ASP.NET MVC+Bootstrap搭建个人博客之打造清新分页Helper三的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

0. 没有找到一款中意的分页插件,又不想使用现成的(丑到爆),所以自己动手造一个吧

先看下效果(其实也不咋滴...):

我的小站地址:我的Bootstrap小站;

利用ASP.NETMVC+Bootstrap搭建个人博客之打造清新分页Helper三

PS:(问博客园:为什么老是删我的置顶随便?上一篇阅读量都快500了,也分分钟给我从首页删掉...真是无语了<博客园地址:http://www.cnblogs.com/haust/p/5615946.html> )。

利用ASP.NETMVC+Bootstrap搭建个人博客之打造清新分页Helper三

有点另类,分页直接是在后台拼接好html,然后发送到前台的:

1. 分页容器:

<div class="pagination">
<ul>
//************分页HTML*********
</ul>
</div>

2. PagerHelper:

namespace ZYN.BLOG.WebHelper
{
public class PagerHelper
{
/// <summary>
/// 生成分页Html数据
/// </summary>
/// <param name="currentPage">当前页</param>
/// <param name="pageSize">页容量</param>
/// <param name="totalCount">数据总条数</param>
/// <returns>pagerHtmlString</returns>
public static string GeneratePagerString(int currentPage, int pageSize, int totalCount)
{
var redirectToUrl = HttpContext.Current.Request.Url.AbsolutePath;
pageSize = pageSize <= 0 ? 4 : pageSize;
//1.0 总页数
int totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1);
//2.0 分页条的容量
int pageBarSize = 6;//默认一个分页条显示6个页码。分页条容量 
//3.0 分页条的个数 totalPages个页数按 pageBarSize = 6 可以 分为多少个分页条
int pageBarNum = (totalPages + pageBarSize - 1) / pageBarSize; // totalPages=13时,也就是把13个页码分成3个分页条
//判断当前页currentPage坐落在第几个分页条内
int position = (currentPage - 1) / pageBarSize; 
//根据分页条的序号,计算出该分页条的第一个页码start和最后一个页码end
int start = position * pageBarSize + 1;
//如果是最后一个分页条,则需判断它实际的页条容量;否则页条容量就是pageBarSize
int curBarCapacity = pageBarSize;
if (position == pageBarNum - 1)
{
curBarCapacity = totalPages - (pageBarNum - 1) * pageBarSize;
}
StringBuilder pagerHtmlString = new StringBuilder();
StringBuilder endHtmlString = new StringBuilder();
//处理首页
pagerHtmlString.AppendFormat("<li id='start-page'><a href='{0}?pageIndex={1}&pageSize={2}'>首页</a></li> ", redirectToUrl, 1, pageSize);
//处理上一页:如果当前页不是第一页,就加上上一页
if (currentPage > 1)
{
pagerHtmlString.AppendFormat("<li class='prev-page'><a href='{0}?pageIndex={1}&pageSize={2}'>上一页</a></li> ", redirectToUrl, currentPage - 1, pageSize);
}
//假如起始位置start为1 7 13
for (int i = 0; i < curBarCapacity; i++) //curBarCapacity=3 i=0 1 2
{
int j = start + i; //要显示的页码当量值
if (j == currentPage)
{
//对当前页的处理:class=active
pagerHtmlString.AppendFormat("<li class='active show-page'><span>{0}</span></li> ", currentPage);
if (curBarCapacity == pageBarSize)
{
//不处理最后一个分页条页
if (currentPage == start + pageBarSize - 1)
{
if (currentPage + 1 < totalPages)
{
endHtmlString.AppendFormat("<li class='show-page'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>", redirectToUrl, currentPage + 1, pageSize, currentPage + 1);
}
endHtmlString.Append("<li class='show-page'><span>...</span></li>");
endHtmlString.AppendFormat("<li class='show-page'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>", redirectToUrl, totalPages, pageSize, totalPages);
}
}
}
else
{
pagerHtmlString.AppendFormat("<li class='show-page'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li> ", redirectToUrl, j, pageSize, j);
}
}
//省略号的处理
pagerHtmlString.Append(endHtmlString.ToString());
//处理下一页:如果当前页不是最后一页,则加上下一页。也即中间的所有分页条都显示下一页
if (currentPage != totalPages)
{
pagerHtmlString.AppendFormat("<li class='next-page'><a href='{0}?pageIndex={1}&pageSize={2}'>下一页</a></li> ", redirectToUrl, currentPage + 1, pageSize);
}
//处理末页
pagerHtmlString.AppendFormat("<li id='end-page'><a href='{0}?pageIndex={1}&pageSize={2}'>末页</a></li> ", redirectToUrl, totalPages, pageSize);
pagerHtmlString.AppendFormat("<li id='total-page'><span>共-{0}-页</span></li>", totalPages);
pagerHtmlString.Append(" ");
return pagerHtmlString.ToString();
}
}
} 

3 渲染出来的分页HTML是这样的:

<div class="pagination">
<ul>   
 <li ><a href="/Home/WrapArtList/0?pageIndex=1&pageSize=6">首页</a></li>     
<li class="active show-page"><span>1</span></li>     
<li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=2&pageSize=6">2</a></li>    
 <li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=3&pageSize=6">3</a></li>    
<li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=4&pageSize=6">4</a></li>    
 <li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=5&pageSize=6">5</a></li>   
<li class="next-page"><a href="/Home/WrapArtList/0?pageIndex=2&pageSize=6">下一页</a></li>   
 <li ><a href="/Home/WrapArtList/0?pageIndex=5&pageSize=6">末页</a></li>     
<li ><span>共-5-页</span></li> </ul>
</div> 

4. CSS样式:

/* 分页样式pagination ====== */
.pagination { /* div pagination*/
margin: 0;
padding: 20px;
text-align: center;
font-size: 12px;
display: block;
}
.pagination ul {
display: inline-block;
*display: inline;
*zoom: 1;
margin-left: 0;
margin-bottom: 0;
padding: 0;
}
.pagination ul > li {
display: inline;
}
.pagination ul > li > a,
.pagination ul > li > span {
margin: 0 2px;
float: left;
padding: 5px 12px;
background-color: #ddd;
color: #666;
border-radius: 2px;
opacity: .88;
}
.pagination ul > li > a:hover,
.pagination ul > li > a:focus {
background-color: #bce8f1;
}
.pagination ul > .active > a,
.pagination ul > .active > span {
background-color: #45B6F7;
color: #fff;
}
.pagination ul > .active > a,
.pagination ul > .active > span {
cursor: default;
}
.pagination ul > li > span,
.pagination ul > .disabled > span,
.pagination ul > .disabled > a,
.pagination ul > .disabled > a:hover,
.pagination ul > .disabled > a:focus {
color: #999999;
background-color: transparent;
cursor: default;
}
/* 自定义的分页pagination 结束====== */ 

以上所述是小编给大家介绍的利用ASP.NET MVC+Bootstrap搭建个人博客之打造清新分页Helper(三),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • 利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    这篇文章主要介绍了利用ASP.NET MVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug四的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下我的个人博客站在使用百度富文本编辑器UEditor修改文章时,遇到了一些问题,(不知是bug,还是我没有配置好).但总算找到了解决方法,在此记录下来. 小站首页文章列表显示为(显示去除HTM ...
  • 利用ASP.NETMVC+Bootstrap搭建个人博客之praise.js点赞特效插件(二)
    这篇文章主要介绍了利用ASP.NET和MVC+Bootstrap搭建个人博客之praise.js点赞特效插件二的相关资料,需要的朋友可以参考下在上篇文章给大家介绍了利用ASP.NET MVC和Bootstrap快速搭建响应式个人博客站(一).接下来给大家介绍如果做个点赞插件,一起通过本文学习吧! 1. 为啥要做这个点赞插件?    praise.js是一款小 ...
  • 利用ASP.NETMVC和Bootstrap快速搭建响应式个人博客站(一)
    利用ASP.NETMVC和Bootstrap快速搭建响应式个人博客站(一)
    这篇文章主要介绍了利用ASP.NET MVC和Bootstrap快速搭建响应式个人博客站一的相关资料,需要的朋友可以参考下1.0 为什么要做这个博客站? 在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了.而且下次再点击这个书签时,可能就会忘记当时为什么要添加这个书签了,更有可能书签连接已经无效. ...
  • asp.netcore实现文件上传功能
    asp.netcore实现文件上传功能
    这篇文章主要为大家详细介绍了asp.net core实现文件上传功能,怎么做单文件和多文件上传,感兴趣的小伙伴们可以参考一下本文实例为大家分享了单文件上传.多文件上传的功能,供大家参考,具体内容如下 单文件上传 上传文件在Web应用程序中是一个常见的功能.在asp.net core中上传文件并保存在服务器上,是很容易的.下面就来演示一下怎么样在 ASP.NE ...
  • 解读ASP.NET5&MVC6系列教程1:ASP.NET5简介
    这篇文章主要介绍ASP.NET 5简介以及对各个版本号进行解释,ASP.NET 5中新的变化,需要的朋友可以参考下.ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东西. 在.NET C ...
猜你喜欢