_Pagination.cshtml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. @model Masuit.MyBlogs.Core.Models.Pagination
  2. @using Masuit.MyBlogs.Core.Common
  3. @using Masuit.Tools
  4. @{
  5. int pages = Math.Ceiling(Model.TotalCount / (Model.Size > 0 ? Model.Size : 15.0)).ToInt32();
  6. int current = Model.Page > 0 ? Model.Page : 1;
  7. int pageStart = current - 4 > 0 ? current - 4 : 1;
  8. int pageEnd = current + 4 >= pages ? pages : current + 4;
  9. current = current > pages ? pages : current;
  10. current = current < 1 ? 1 : current;
  11. if (pageEnd - pageStart < 9)
  12. {
  13. if (pageStart == 1)
  14. {
  15. pageEnd = pageStart + 8 >= pages ? pages : pageStart + 8;
  16. }
  17. else
  18. {
  19. pageStart = pageEnd - 8 > 0 ? pageEnd - 8 : 1;
  20. }
  21. }
  22. }
  23. @if (pages > 1)
  24. {
  25. <ul class="pagination" style="margin: 0">
  26. @if (current == 1)
  27. {
  28. <li class="disabled">
  29. <a>
  30. 首页
  31. </a>
  32. </li>
  33. <li class="disabled">
  34. <a aria-label="Previous">
  35. <span aria-hidden="true">&laquo;</span>
  36. </a>
  37. </li>
  38. }
  39. else
  40. {
  41. <li>
  42. <a href="@($"{Context.Request.Path}?orderby={Model.OrderBy}".TrimQuery())" aria-label="Previous">
  43. 首页
  44. </a>
  45. </li>
  46. <li>
  47. <a href="@($"{Context.Request.Path}?page={(Model.Page - 1 <= 0 ? 1 : Model.Page - 1)}&size={Model.Size}&orderby={Model.OrderBy}".TrimQuery())" aria-label="Previous">
  48. <span aria-hidden="true">&laquo;</span>
  49. </a>
  50. </li>
  51. }
  52. @if (pageStart > 1)
  53. {
  54. <li class="disabled">
  55. <a aria-label="Previous">
  56. <span aria-hidden="true">...</span>
  57. </a>
  58. </li>
  59. }
  60. @for (int i = pageStart; i <= pageEnd; i++)
  61. {
  62. if (i == current)
  63. {
  64. <li class="disabled">
  65. <a>@i</a>
  66. </li>
  67. }
  68. else
  69. {
  70. <li>
  71. <a href="@($"{Context.Request.Path}?page={i}&size={Model.Size}&orderby={Model.OrderBy}".TrimQuery())">@i</a>
  72. </li>
  73. }
  74. }
  75. @if (pageEnd < pages)
  76. {
  77. <li class="disabled">
  78. <a aria-label="Previous">
  79. <span aria-hidden="true">...</span>
  80. </a>
  81. </li>
  82. }
  83. @if (current == pages)
  84. {
  85. <li class="disabled">
  86. <a>
  87. <span aria-hidden="true">&raquo;</span>
  88. </a>
  89. </li>
  90. <li class="disabled">
  91. <a>
  92. 末页
  93. </a>
  94. </li>
  95. }
  96. else
  97. {
  98. <li>
  99. <a href="@($"{Context.Request.Path}?page={current + 1}&size={Model.Size}&orderby={Model.OrderBy}".TrimQuery())" aria-label="Next">
  100. <span aria-hidden="true">&raquo;</span>
  101. </a>
  102. </li>
  103. <li>
  104. <a href="@($"{Context.Request.Path}?page={pages}&size={Model.Size}&orderby={Model.OrderBy}".TrimQuery())" aria-label="Next">
  105. 末页
  106. </a>
  107. </li>
  108. }
  109. </ul>
  110. }