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

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

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

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

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

  有点另类,分页直接是在后台拼接好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 id="start-page"><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 id="end-page"><a href="/Home/WrapArtList/0?pageIndex=5&pageSize=6">末页</a></li>     
<li id="total-page"><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(三),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • ASP.NET MVC4 Razor模板简易分页效果

    一.无数据提交 第一步,建立一个 Controller命名为PageIndex的空控制器,自定义一个方法如下: public ActionResult PageIndex(string action, string controller, int currentPage, int pageCount) { //int count = db.Product.Count(); ViewBag.PageCount = pageCount;//从操作中获取总数据页数将传入分页视图页面 ViewBag.C

  • ASP.NET MVC分页和排序功能实现

    分页和排序,应该是软件开发中,需要必知必会的技能了,对于分页,网上很多教程,当然,别人终究是别人的,只有自己理解,会了,并且吸收之后,再用自己的语言,传授出来,这才是硬道理.好了,废话说多了.现在我们进入正题: 这里,我打算使用EF Code-First方式分页控件就是用PagedList.MVC,来做分页,对于排序,实现的思路是,加载数据出来之后,默认是升序排序,然后我们点击一下相应的列标题,就按照该字段降序排序,查数据.思路明确了,就开始干吧! 1.首先新建一个空白的MVC项目,在Model

  • ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项

    一直想自己做个博客网站,技术路线是用ASN.NET MVC5+EF6(Code First)+ZUI+各种Jquery插件,有了这个想法之后就开始选择UI,看了好多bootstrap的模板之后,发现即使你用了bootstrap还是要自己写css样式,都是自学的,前端真的很垃圾,在网上找了很多UI,以下是各种UI的地址,需要的可以去看看: H-ui:http://www.h-ui.net/H-ui.admin.shtml ,是一个前端大牛弄得,模仿bootstrap,做适合中国网上的UI. Ama

  • ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)

    ASP.NET MVC中进行分页的方式有多种,但在NuGet上使用最广泛的就是用PagedList.X.PagedList.Mvc进行分页.(原名为:PagedList.Mvc,但是2014年开始,作者将项目名称改名字为"X.PagedList.Mvc"),用这个插件的话会非常便利,大家可以试试,接下来将给大家讲下如何安装这个NuGet插件. ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(原名为PagedList.Mvc) 1.工具--NuGet 程序包管理

  • ASP.NET同步分页MvcPager使用详解

    最近接触了一下MvcPager,来做个笔记吧 其实,我喜欢前后端分离,分页这种东西前端负责的地方,后端不用顾问,这里的MvcPager有点让我想起服务器控件,毕竟用到了HtmlHelper. 但是挺方便的..以前我们写分页,后端会封装一Page<T>类,现在我们可以用MvcPager给我们提供好的PageList<T>,功能有点类似,不过MvcPager的功能要强大. 一.使用MvcPager这个控件,需要以下支持 1.后端MvcPager.dll引用: 2.前端需要Css:pag

  • ASP.NET MVC 2右键菜单和简单分页实例讲解

    右键菜单非常方便,很多时候会用到.这篇文章将使用一个JQUERY的插件在ASP.NET MVC中实现右键菜单.本文还将介绍一下在ASP.NET MVC中如何实现简单的分页.效果如下图: 新建一个asp.net mvc应用程序.将此插件放入Scripts文件夹.并在页面上引用. 定义右键菜单: <div class="contextMenu" id="myMenu1"> <ul> <li id="detail">

  • ASP.NET MVC分页的实现方法

    在这一篇文章中,我们将学习如何在MVC页面中实现分页的方法.分页功能是一个非常实用,常用的功能,当数据量过多的时候,必然要使用分页.在今天这篇文章中,我们学习如果在MVC页面中使用PagedList.Mvc包来实现分页功能. 1) 安装PagedList.Mvc 首先,我们需要安装分页组件包,在Visual Studio 2010中点击[项目]-[管理NuGet程序包],打开NuGet包管理器窗体,在该窗体中,选择"联机"标签,然后搜索pagedlist,如下图所示.点击"安

  • asp.net MVC分页代码分享

    本文实例为大家分享了MVC分页代码,供大家参考,具体内容如下 using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Web; using System.Text; using System.Web.Mvc; using System.Web.Routing; using System.Data.Objects.DataClasses; name

  • asp.net mvc4 mysql制作简单分页组件(部分视图)

    在开始做mysql分页功能组件前,便设定的是要有一定可复用性.先在项目里Views文件夹下右键新建名为_PaginationComponent.cshtml,这里html及css我采用的bootstrap分页组件,这可以参考http://v3.bootcss.com/components/. 先将生成项目效果截图呈上: 这里有需要预先知道的,是mysql分页查询与mssql分页查询实现不同点在于,mysql支持limit语句,limit格式为 limit pageIndex*pageSize,p

  • ASP.NET MVC4 HtmlHelper扩展类,实现分页功能

    1.扩展HtmlHelper类方法ShowPageNavigate public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) { var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath; page

随机推荐