MVC3 分页Helper
利用mvc3实现分页效果。效果图如下:
直接拷代码:
首页添加一个Helper的类(命名空间为System.Web.Mvc;)。
1 public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) 2 { 3 var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath; 4 pageSize = pageSize == 0 ? 3 : pageSize; 5 var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数 6 var output = new StringBuilder(); 7 if (totalPages > 1) 8 { 9 output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize); 10 if (currentPage > 1) 11 {//处理上一页的连接 12 output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize); 13 } 14 15 output.Append(" "); 16 int currint = 5; 17 for (int i = 0; i <= 10; i++) 18 {//一共最多显示10个页码,前面5个,后面5个 19 if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages) 20 { 21 if (currint == i) 22 {//当前页处理 23 output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage); 24 } 25 else 26 {//一般页处理 27 output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint); 28 } 29 } 30 output.Append(" "); 31 } 32 if (currentPage < totalPages) 33 {//处理下一页的链接 34 output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize); 35 } 36 37 output.Append(" "); 38 if (currentPage != totalPages) 39 { 40 output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize); 41 } 42 output.Append(" "); 43 } 44 output.AppendFormat("<label>第{0}页 / 共{1}页</label>", currentPage, totalPages);//这个统计加不加都行 45 46 return new HtmlString(output.ToString()); 47 }
其次再添加两个公共类:PagerInfo与PageQuery。PagerInfo类用于放置分页相关内容。PageQuery则用于放置PagerInfo及要显示的数据信息。
1 public class PagerInfo 2 { 3 public int RecordCount { get; set; } 4 5 public int CurrentPageIndex { get; set; } 6 7 public int PageSize { get; set; } 8 }