利用ASP.NET MVC+Bootstrap搭建個(gè)人博客之打造清新分頁(yè)Helper(三)
0. 沒(méi)有找到一款中意的分頁(yè)插件,又不想使用現(xiàn)成的(丑到爆),所以自己動(dòng)手造一個(gè)吧
先看下效果(其實(shí)也不咋滴...):
我的小站地址:我的Bootstrap小站;

PS:(問(wèn)博客園:為什么老是刪我的置頂隨便?上一篇閱讀量都快500了,也分分鐘給我從首頁(yè)刪掉...真是無(wú)語(yǔ)了<博客園地址:http://www.cnblogs.com/haust/p/5615946.html> )。

有點(diǎn)另類,分頁(yè)直接是在后臺(tái)拼接好html,然后發(fā)送到前臺(tái)的:
1. 分頁(yè)容器:
<div class="pagination"> <ul> //************分頁(yè)HTML********* </ul> </div>
2. PagerHelper:
namespace ZYN.BLOG.WebHelper
{
public class PagerHelper
{
/// <summary>
/// 生成分頁(yè)Html數(shù)據(jù)
/// </summary>
/// <param name="currentPage">當(dāng)前頁(yè)</param>
/// <param name="pageSize">頁(yè)容量</param>
/// <param name="totalCount">數(shù)據(jù)總條數(shù)</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 總頁(yè)數(shù)
int totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1);
//2.0 分頁(yè)條的容量
int pageBarSize = 6;//默認(rèn)一個(gè)分頁(yè)條顯示6個(gè)頁(yè)碼。分頁(yè)條容量
//3.0 分頁(yè)條的個(gè)數(shù) totalPages個(gè)頁(yè)數(shù)按 pageBarSize = 6 可以 分為多少個(gè)分頁(yè)條
int pageBarNum = (totalPages + pageBarSize - 1) / pageBarSize; // totalPages=13時(shí),也就是把13個(gè)頁(yè)碼分成3個(gè)分頁(yè)條
//判斷當(dāng)前頁(yè)currentPage坐落在第幾個(gè)分頁(yè)條內(nèi)
int position = (currentPage - 1) / pageBarSize;
//根據(jù)分頁(yè)條的序號(hào),計(jì)算出該分頁(yè)條的第一個(gè)頁(yè)碼start和最后一個(gè)頁(yè)碼end
int start = position * pageBarSize + 1;
//如果是最后一個(gè)分頁(yè)條,則需判斷它實(shí)際的頁(yè)條容量;否則頁(yè)條容量就是pageBarSize
int curBarCapacity = pageBarSize;
if (position == pageBarNum - 1)
{
curBarCapacity = totalPages - (pageBarNum - 1) * pageBarSize;
}
StringBuilder pagerHtmlString = new StringBuilder();
StringBuilder endHtmlString = new StringBuilder();
//處理首頁(yè)
pagerHtmlString.AppendFormat("<li id='start-page'><a href='{0}?pageIndex={1}&pageSize={2}'>首頁(yè)</a></li> ", redirectToUrl, 1, pageSize);
//處理上一頁(yè):如果當(dāng)前頁(yè)不是第一頁(yè),就加上上一頁(yè)
if (currentPage > 1)
{
pagerHtmlString.AppendFormat("<li class='prev-page'><a href='{0}?pageIndex={1}&pageSize={2}'>上一頁(yè)</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; //要顯示的頁(yè)碼當(dāng)量值
if (j == currentPage)
{
//對(duì)當(dāng)前頁(yè)的處理:class=active
pagerHtmlString.AppendFormat("<li class='active show-page'><span>{0}</span></li> ", currentPage);
if (curBarCapacity == pageBarSize)
{
//不處理最后一個(gè)分頁(yè)條頁(yè)
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);
}
}
//省略號(hào)的處理
pagerHtmlString.Append(endHtmlString.ToString());
//處理下一頁(yè):如果當(dāng)前頁(yè)不是最后一頁(yè),則加上下一頁(yè)。也即中間的所有分頁(yè)條都顯示下一頁(yè)
if (currentPage != totalPages)
{
pagerHtmlString.AppendFormat("<li class='next-page'><a href='{0}?pageIndex={1}&pageSize={2}'>下一頁(yè)</a></li> ", redirectToUrl, currentPage + 1, pageSize);
}
//處理末頁(yè)
pagerHtmlString.AppendFormat("<li id='end-page'><a href='{0}?pageIndex={1}&pageSize={2}'>末頁(yè)</a></li> ", redirectToUrl, totalPages, pageSize);
pagerHtmlString.AppendFormat("<li id='total-page'><span>共-{0}-頁(yè)</span></li>", totalPages);
pagerHtmlString.Append(" ");
return pagerHtmlString.ToString();
}
}
}
3 渲染出來(lái)的分頁(yè)HTML是這樣的:
<div class="pagination"> <ul> <li id="start-page"><a href="/Home/WrapArtList/0?pageIndex=1&pageSize=6">首頁(yè)</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">下一頁(yè)</a></li> <li id="end-page"><a href="/Home/WrapArtList/0?pageIndex=5&pageSize=6">末頁(yè)</a></li> <li id="total-page"><span>共-5-頁(yè)</span></li> </ul> </div>
4. CSS樣式:
/* 分頁(yè)樣式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;
}
/* 自定義的分頁(yè)pagination 結(jié)束====== */
以上所述是小編給大家介紹的利用ASP.NET MVC+Bootstrap搭建個(gè)人博客之打造清新分頁(yè)Helper(三),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- ASP.NET MVC 5使用X.PagedList.Mvc進(jìn)行分頁(yè)教程(PagedList.Mvc)
- ASP.NET MVC4 HtmlHelper擴(kuò)展類,實(shí)現(xiàn)分頁(yè)功能
- ASP.NET MVC分頁(yè)和排序功能實(shí)現(xiàn)
- ASP.NET MVC+EF在服務(wù)端分頁(yè)使用jqGrid以及jquery Datatables的注意事項(xiàng)
- ASP.NET MVC4 Razor模板簡(jiǎn)易分頁(yè)效果
- asp.net mvc4 mysql制作簡(jiǎn)單分頁(yè)組件(部分視圖)
- ASP.NET MVC 2右鍵菜單和簡(jiǎn)單分頁(yè)實(shí)例講解
- ASP.NET同步分頁(yè)MvcPager使用詳解
- asp.net MVC分頁(yè)代碼分享
- ASP.NET MVC分頁(yè)的實(shí)現(xiàn)方法
相關(guān)文章
asp.net GridView控件中實(shí)現(xiàn)全選的解決方案
在GridView中我們經(jīng)常要利用復(fù)選按鈕實(shí)現(xiàn)全選的功能,下面針對(duì)這一解決方案做以總結(jié)2010-03-03
.NET使用Collections.Pooled提升性能優(yōu)化的方法
這篇文章主要介紹了.NET使用Collections.Pooled性能優(yōu)化的方法,今天要給大家分享類庫(kù)Collections.Pooled,它是通過(guò)池化內(nèi)存來(lái)達(dá)到降低內(nèi)存占用和GC的目的,另外也會(huì)帶大家看看源碼,為什么它會(huì)帶來(lái)這些性能提升,一起通過(guò)本文學(xué)習(xí)下吧2022-05-05
asp.net 數(shù)據(jù)綁定時(shí)對(duì)數(shù)據(jù)列做個(gè)性化處理
asp.net 數(shù)據(jù)綁定時(shí)對(duì)數(shù)據(jù)列做個(gè)性化處理,需要的朋友可以參考下。2011-12-12
ASP.NET站點(diǎn)導(dǎo)航應(yīng)用詳解
這篇文章主要內(nèi)容是ASP.NET站點(diǎn)導(dǎo)航,主要包括站點(diǎn)導(dǎo)航以及動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖,感興趣的小伙伴們可以參考一下2015-09-09
ASP.NET Web應(yīng)用程序出現(xiàn)Maximum request length
ASP.NET Web應(yīng)用中導(dǎo)出數(shù)據(jù)時(shí)出現(xiàn)500-Internal Server Error,原因是客戶端請(qǐng)求長(zhǎng)度超過(guò)了服務(wù)器配置的最大限制,解決方法在web.config增加maxRequestLength屬性,單位為字節(jié)(Byte),本文介紹ASP.NET Web應(yīng)用程序出現(xiàn)Maximum request length exceeded報(bào)錯(cuò)的原因,一起看看吧2024-12-12
asp.net 無(wú)刷新附件上傳實(shí)現(xiàn)方法
一直以來(lái)附件上傳都是個(gè)很郁悶的問(wèn)題,剛開始是利用js添加input file 然后一起提交來(lái)實(shí)現(xiàn)多文件上傳,在使用163郵箱的時(shí)候很是羨慕它的附件上傳部分(選擇完文件就提交,可以多個(gè)文件一起上傳,而且還可以獲取上傳進(jìn)度),這時(shí)就很想自己也寫個(gè)那樣的東西出來(lái)。2010-01-01

