当前位置:Gxlcms > asp.net > asp.net MVC分页代码分享

asp.net MVC分页代码分享

时间:2021-07-01 10:21:17 帮助过:38人阅读

本文实例为大家分享了MVC分页代码,供大家参考,具体内容如下

  1. using System.Collections.Generic;
  2. using System.Collections.Specialized;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Text;
  6. using System.Web.Mvc;
  7. using System.Web.Routing;
  8. using System.Data.Objects.DataClasses;
  9. namespace System.Web.Mvc
  10. {
  11. public static class PagerHelper
  12. {
  13. /// <summary>
  14. /// 分页
  15. /// </summary>
  16. /// <param name="helper"></param>
  17. /// <param name="id">分页id</param>
  18. /// <param name="currentPageIndex">当前页</param>
  19. /// <param name="pageSize">分页尺寸</param>
  20. /// <param name="recordCount">记录总数</param>
  21. /// <param name="htmlAttributes">分页头标签属性</param>
  22. /// <param name="className">分页样式</param>
  23. /// <param name="mode">分页模式</param>
  24. /// <returns></returns>
  25. public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, object htmlAttributes, string className, PageMode mode)
  26. {
  27. TagBuilder builder = new TagBuilder("table");
  28. builder.IdAttributeDotReplacement = "_";
  29. builder.GenerateId(id);
  30. builder.AddCssClass(className);
  31. builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
  32. builder.InnerHtml = GetNormalPage(currentPageIndex, pageSize, recordCount, mode);
  33. return builder.ToString();
  34. }
  35. /// <summary>
  36. /// 分页
  37. /// </summary>
  38. /// <param name="helper"></param>
  39. /// <param name="id">分页id</param>
  40. /// <param name="currentPageIndex">当前页</param>
  41. /// <param name="pageSize">分页尺寸</param>
  42. /// <param name="recordCount">记录总数</param>
  43. /// <param name="className">分页样式</param>
  44. /// <returns></returns>
  45. public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className)
  46. {
  47. return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, PageMode.Normal);
  48. }
  49. /// <summary>
  50. /// 分页
  51. /// </summary>
  52. /// <param name="helper"></param>
  53. /// <param name="id">分页id</param>
  54. /// <param name="currentPageIndex">当前页</param>
  55. /// <param name="pageSize">分页尺寸</param>
  56. /// <param name="recordCount">记录总数</param>
  57. /// <returns></returns>
  58. public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount)
  59. {
  60. return Pager(helper, id, currentPageIndex, pageSize, recordCount, null);
  61. }
  62. /// <summary>
  63. /// 分页
  64. /// </summary>
  65. /// <param name="helper"></param>
  66. /// <param name="id">分页id</param>
  67. /// <param name="currentPageIndex">当前页</param>
  68. /// <param name="pageSize">分页尺寸</param>
  69. /// <param name="recordCount">记录总数</param>
  70. /// <param name="mode">分页模式</param>
  71. /// <returns></returns>
  72. public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, PageMode mode)
  73. {
  74. return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, mode);
  75. }
  76. /// <summary>
  77. /// 分页
  78. /// </summary>
  79. /// <param name="helper"></param>
  80. /// <param name="id">分页id</param>
  81. /// <param name="currentPageIndex">当前页</param>
  82. /// <param name="pageSize">分页尺寸</param>
  83. /// <param name="recordCount">记录总数</param>
  84. /// <param name="className">分页样式</param>
  85. /// <param name="mode">分页模式</param>
  86. /// <returns></returns>
  87. public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className, PageMode mode)
  88. {
  89. return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, mode);
  90. }
  91. /// <summary>
  92. /// 获取普通分页
  93. /// </summary>
  94. /// <param name="currentPageIndex"></param>
  95. /// <param name="pageSize"></param>
  96. /// <param name="recordCount"></param>
  97. /// <returns></returns>
  98. private static string GetNormalPage(int currentPageIndex, int pageSize, int recordCount, PageMode mode)
  99. {
  100. int pageCount = (recordCount % pageSize == 0 ? recordCount / pageSize : recordCount / pageSize + 1);
  101. StringBuilder url = new StringBuilder();
  102. url.Append(HttpContext.Current.Request.Url.AbsolutePath + "?page={0}");
  103. NameValueCollection collection = HttpContext.Current.Request.QueryString;
  104. string[] keys = collection.AllKeys;
  105. for (int i = 0; i < keys.Length; i++)
  106. {
  107. if (keys[i].ToLower() != "page")
  108. url.AppendFormat("&{0}={1}", keys[i], collection[keys[i]]);
  109. }
  110. StringBuilder sb = new StringBuilder();
  111. sb.Append("<tr><td>");
  112. sb.AppendFormat("总共{0}条记录,共{1}页,当前第{2}页 ", recordCount, pageCount, currentPageIndex);
  113. if (currentPageIndex == 1)
  114. sb.Append("<span>首页</span> ");
  115. else
  116. {
  117. string url1 = string.Format(url.ToString(), 1);
  118. sb.AppendFormat("<span><a href={0}>首页</a></span> ", url1);
  119. }
  120. if (currentPageIndex > 1)
  121. {
  122. string url1 = string.Format(url.ToString(), currentPageIndex - 1);
  123. sb.AppendFormat("<span><a href={0}>上一页</a></span> ", url1);
  124. }
  125. else
  126. sb.Append("<span>上一页</span> ");
  127. if (mode == PageMode.Numeric)
  128. sb.Append(GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString()));
  129. if (currentPageIndex < pageCount)
  130. {
  131. string url1 = string.Format(url.ToString(), currentPageIndex + 1);
  132. sb.AppendFormat("<span><a href={0}>下一页</a></span> ", url1);
  133. }
  134. else
  135. sb.Append("<span>下一页</span> ");
  136. if (currentPageIndex == pageCount)
  137. sb.Append("<span>末页</span> ");
  138. else
  139. {
  140. string url1 = string.Format(url.ToString(), pageCount);
  141. sb.AppendFormat("<span><a href={0}>末页</a></span> ", url1);
  142. }
  143. return sb.ToString();
  144. }
  145. /// <summary>
  146. /// 获取数字分页
  147. /// </summary>
  148. /// <param name="currentPageIndex"></param>
  149. /// <param name="pageSize"></param>
  150. /// <param name="recordCount"></param>
  151. /// <param name="pageCount"></param>
  152. /// <param name="url"></param>
  153. /// <returns></returns>
  154. private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount, int pageCount, string url)
  155. {
  156. int k = currentPageIndex / 10;
  157. int m = currentPageIndex % 10;
  158. StringBuilder sb = new StringBuilder();
  159. if (currentPageIndex / 10 == pageCount / 10)
  160. {
  161. if (m == 0)
  162. {
  163. k--;
  164. m = 10;
  165. }
  166. else
  167. m = pageCount % 10;
  168. }
  169. else
  170. m = 10;
  171. for (int i = k * 10 + 1; i <= k * 10 + m; i++)
  172. {
  173. if (i == currentPageIndex)
  174. sb.AppendFormat("<span><font color=red><b>{0}</b></font></span> ", i);
  175. else
  176. {
  177. string url1 = string.Format(url.ToString(), i);
  178. sb.AppendFormat("<span><a href={0}>{1}</a></span> ", url1, i);
  179. }
  180. }
  181. return sb.ToString();
  182. }
  183. }
  184. /// <summary>
  185. /// 分页模式
  186. /// </summary>
  187. public enum PageMode
  188. {
  189. /// <summary>
  190. /// 普通分页模式
  191. /// </summary>
  192. Normal,
  193. /// <summary>
  194. /// 普通分页加数字分页
  195. /// </summary>
  196. Numeric
  197. }
  198. }

html代码

  1. <div id="pageNav" class="pageinator">
  2. @Html.ShowPageNavigate((int)ViewData["pageindex"], (int)ViewBag.pageSize, (int)ViewBag.totalCount);
  3. </div>

控制器

  1. shopEntities shop = new shopEntities();
  2. public ActionResult Index()
  3. {
  4. //IQueryable<tbl_order> order = (from a in shop.tbl_order select a).OrderBy(a=>a.id).Skip(10).Take(10);
  5. //ViewData["order"] = order;
  6. //return View();
  7. int pageIndex = Request["pageIndex"] == null ? 1 : int.Parse(Request["pageIndex"]);
  8. int pageSize = Request["pageSize"] == null ? 10 : int.Parse(Request["pageSize"]);
  9. int totalCount = 0;
  10. //给前台传递 分页的参数数据
  11. ViewData["pageIndex"] = pageIndex;
  12. //ViewData["pageSize"] = pageSize;
  13. ViewBag.pageSize = pageSize;
  14. //总条数
  15. totalCount = shop.tbl_order.Count();
  16. ViewBag.totalCount = totalCount;
  17. //把当前页面数据发送到前台。
  18. //ViewData.Model = db.UserInfo.ToList();
  19. //List<tbl_order> pp = shop.tbl_order
  20. // .OrderBy(u => u.id)
  21. // .Skip((pageIndex - 1) * pageSize)
  22. // .Take(pageSize).ToList();
  23. IQueryable<tbl_order> pp = shop.tbl_order
  24. .OrderBy(u => u.id)
  25. .Skip((pageIndex - 1) * pageSize)
  26. .Take(pageSize);
  27. return View(pp);
  28. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行