1 using System.Text; 2 3 namespace CommonFuns 4 { 5 public class Paging 6 { 7 public static string IndexHtml(int recordCount, int pageCount, int pageIndex, string keyStr, int pageSize) 8 { 9 return IndexHtml(recordCount, pageCount, pageIndex, keyStr, pageSize, false); 10 } 11 12 public static string IndexHtml(int recordCount, int pageCount, int pageIndex, string keyStr, int pageSize, bool isInput) 13 { 14 return IndexHtml(recordCount, pageCount, pageIndex, keyStr, pageSize, isInput, string.Empty); 15 } 16 17 /// <summary> 18 /// 分页方法 19 /// </summary> 20 /// <param name="recordCount">总记录数</param> 21 /// <param name="pageCount">总页数</param> 22 /// <param name="pageIndex">当前页</param> 23 /// <param name="keyStr">查询关键字</param> 24 /// <param name="pageSize">页内记录数目</param> 25 /// <param name="isInput">是否跳页</param> 26 /// <param name="pagePath">页链接</param> 27 /// <returns></returns> 28 public static string IndexHtml(int recordCount, int pageCount, int pageIndex, string keyStr, int pageSize, bool isInput, string pagePath) 29 { 30 if (!string.IsNullOrEmpty(keyStr)) 31 { 32 if (!keyStr.StartsWith("&")) 33 { 34 keyStr = "&" + keyStr; 35 } 36 } 37 StringBuilder sb = new StringBuilder(); 38 sb.Append("<div class='pageIndex'><ul><li>"); 39 sb.Append($"<span class='d0'>总计:{recordCount} 条 ,每页显示{pageIndex}条,第 {pageSize} 页</span>"); 40 41 #region 首页 上一页 42 43 if (pageIndex == 1) 44 { 45 sb.Append("<span class='d' style='color:#bfbfbf'>首页</span>"); 46 sb.Append("<span class='d2' style='color:#bfbfbf'>上一页</span>"); 47 } 48 else 49 { 50 sb.Append($"<span class='d'><a href='{pagePath}?page=1{keyStr}'>首页</a></span>"); 51 sb.Append($"<span class='d2'><a href='{pagePath}?page={pageIndex - 1}{keyStr}'>上一页</a></span>"); 52 } 53 54 #endregion 55 56 #region 数字导航 57 58 int startId = 1, endId = 1; 59 startId = pageIndex - 3; 60 endId = pageIndex + 4; 61 startId = startId < 1 ? 1 : startId; 62 endId = endId > pageCount ? pageCount : endId; 63 64 for (int i = startId; i <= endId; i++) 65 { 66 if (i == pageIndex) 67 { 68 sb.Append($"<span class='d3'><a href='{pagePath}?page={i}{keyStr}'>{i}</a></span>"); 69 } 70 else 71 { 72 sb.Append($"<span class='d4'><a href='{pagePath}?page={i}{keyStr}'>{i}</a></span>"); 73 } 74 } 75 76 #endregion 77 78 #region 下一页 尾页 79 80 if (pageIndex == pageCount || pageCount == 0) 81 { 82 sb.Append("<span class='d2' style='color:#bfbfbf'>下一页</span>"); 83 sb.Append("<span class='d' style='color:#bfbfbf'>尾页</span>"); 84 } 85 else 86 { 87 sb.Append($"<span class='d2'><a href='{pagePath}?page={pageIndex + 1}{keyStr}'>下一页</a></span>"); 88 sb.Append($"<span class='d'><a href='{pagePath}?page={pageCount}{keyStr}'>尾页</a></span>"); 89 } 90 91 #endregion 92 93 #region 跳到某一页 94 95 if (isInput) 96 { 97 sb.Append($"<input id='cptext' type='text' value='{pageIndex}' /> <input id='btnGo' url='{keyStr}' value='Go' type='button'/>"); 98 } 99 100 #endregion 101 102 sb.Append("</li></ul>"); 103 sb.Append("</div>"); 104 105 return sb.ToString(); 106 } 107 } 108 }
Controller页面
1 public ActionResult Index(int? page, string key) 2 { 3 BreakPage pageQuery = new BreakPage(); 4 pageQuery.PageIndex = page ?? 1; 5 pageQuery.PageSize = 5; 6 string urlParameters = string.Empty; 7 if (!string.IsNullOrEmpty(key)) 8 { 9 urlParameters += string.Format("&key={0}", Url.Encode(key)); 10 11 } 12 ViewBag.PageIndexHtml = Paging.IndexHtml(pageQuery.TotalItems, pageQuery.TotalPages, pageQuery.PageIndex, urlParameters, pageQuery.PageSize); 13 return View(); 14 }
BreakPage类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace CommonFuns 7 { 8 /// <summary> 9 /// 分页信息 10 /// </summary> 11 public class BreakPage 12 { 13 14 /// <summary> 15 /// 默认PageSize=10 16 /// </summary> 17 public BreakPage() 18 { 19 this.mPageIndex = 1; 20 this.mPageSize = 10; 21 } 22 /// <summary> 23 /// 24 /// </summary> 25 /// <param name="pageSize"></param> 26 public BreakPage(int pageSize) 27 { 28 this.mPageSize = pageSize; 29 } 30 31 /// <summary> 32 /// 分页构造函数【两个参数版】 33 /// </summary> 34 /// <param name="PageIndex">页码</param> 35 /// <param name="PageSize">页面大小</param> 36 public BreakPage( int PageIndex, int PageSize ) 37 { 38 this.mPageIndex = PageIndex; 39 this.mPageSize = PageSize; 40 } 41 42 43 44 private int mPageIndex; 45 /// <summary> 46 /// 当前页码 47 /// </summary> 48 public int PageIndex 49 { 50 set { mPageIndex = value; } 51 get 52 { 53 return mPageIndex < 1 ? 1 : mPageIndex; 54 } 55 } 56 57 private int mPageSize; 58 /// <summary> 59 /// 每页大小 60 /// </summary> 61 public int PageSize 62 { 63 set { mPageSize = value; } 64 get 65 { 66 return mPageSize < 1 ? 10 : mPageSize; 67 } 68 } 69 70 private int mTotalItems; 71 /// <summary> 72 /// 符合条件总记录条数 73 /// </summary> 74 public int TotalItems 75 { 76 get { return mTotalItems; } 77 set 78 { 79 mTotalItems = value; 80 } 81 } 82 83 private string mFilter; 84 /// <summary> 85 /// 筛选条件 86 /// </summary> 87 public string Filter 88 { 89 get { return mFilter; } 90 set { mFilter = value; } 91 } 92 93 /// <summary> 94 /// 符合条件总页数 95 /// </summary> 96 public int TotalPages 97 { 98 get 99 { 100 return (int)(mPageSize == 0 ? 0 : Math.Ceiling(TotalItems / (double)mPageSize)); 101 } 102 } 103 104 private bool mIsAsc; 105 /// <summary> 106 /// 是否升序 107 /// </summary> 108 public bool IsAsc 109 { 110 get 111 { 112 return mIsAsc; 113 } 114 set 115 { 116 mIsAsc = value; 117 } 118 } 119 120 private string mOrderExpression; 121 /// <summary> 122 /// 排序表达式 123 /// </summary> 124 public string OrderExpression 125 { 126 get 127 { 128 return mOrderExpression; 129 } 130 set 131 { 132 mOrderExpression = value; 133 } 134 } 135 136 } 137 }
cshtml页面调用
1 @Html.Raw(ViewBag.PageIndexHtml)