1 public static MvcHtmlString PageControl(this HtmlHelper html, PageData page) 2 { 3 if (page == null || page.totalpage == 0) 4 return MvcHtmlString.Create(string.Empty); 5 6 page.pageindex = page.pageindex < 1 ? 1 : page.pageindex; 7 string url = HttpContext.Current.Request.Url.ToString(); 8 if (url.IndexOf('#') > -1) 9 url = url.Substring(0, url.IndexOf('#')); 10 11 StringBuilder sb = new StringBuilder(); 12 sb.Append("<div class='paging-toolbar'>"); 13 sb.Append("<ul class='pagination'>"); 14 #region 首页 15 if (page.totalpage > 1) 16 sb.Append("<li><a href='" + GetUrl(url, 1) + "'>首页</a></li>"); 17 #endregion 18 19 #region 上一页 20 if (page.pageindex > 1) 21 sb.Append("<li><a href='" + GetUrl(url, page.pageindex - 1) + "'>上一页</a></li>"); 22 #endregion 23 24 #region 中间和当前页 25 var half = page.count % 2 == 0 ? page.count / 2 : page.count / 2 + 1; // 展示页一半 26 var leng = page.count; 27 if (page.count > page.totalpage) leng = page.totalpage; 28 29 if (page.pageindex > page.totalpage - leng + half) 30 { 31 for (int i = page.totalpage - leng + 1; i <= page.totalpage; i++) 32 { 33 if (i == page.pageindex) 34 { 35 sb.Append("<li class='active'><a href='" + GetUrl(url, page.pageindex) + "'>" + page.pageindex + "</a></li>"); 36 } 37 else 38 { 39 sb.Append("<li><a href='" + GetUrl(url, i) + "'>" + i + "</a></li>"); 40 } 41 } 42 } 43 else 44 { 45 for (int i = 1; i <= leng; i++) 46 { 47 if (i == half) 48 { 49 sb.Append("<li class='active'><a href='" + GetUrl(url, page.pageindex) + "'>" + page.pageindex + "</a></li>"); 50 } 51 else 52 { 53 var p = page.pageindex - half + i; 54 if (p > 0) 55 sb.Append("<li><a href='" + GetUrl(url, p) + "'>" + p + "</a></li>"); 56 else 57 leng += 1; 58 } 59 } 60 } 64 #endregion 65 66 #region 下一页 67 if (page.pageindex < page.totalpage) 68 sb.Append("<li><a href='" + GetUrl(url, page.pageindex < 2 ? 2 : page.pageindex + 1) + "'>下一页</a></li>"); 69 #endregion 70 71 #region 末页 72 if (page.totalpage > 1) 73 sb.Append("<li><a href='" + GetUrl(url, page.totalpage) + "'>末页</a></li>"); 74 #endregion 75 76 sb.Append("</ul>"); 77 sb.Append("</div>"); 78 79 return MvcHtmlString.Create(sb.ToString()); 80 }
1 public class PageData 2 { 3 /// <summary> 4 /// 展示的页数 5 /// </summary> 6 public int count { get; set; } 7 8 /// <summary> 9 /// 当前页 10 /// </summary> 11 public int pageindex { get; set; } 12 13 /// <summary> 14 /// 总页数 15 /// </summary> 16 public int totalpage { get; set; } 17 18 /// <summary> 19 /// 总条数 20 /// </summary> 21 public int totalrecord { get; set; } 22 }