使用 ASP.NET 生成 Html 分页代码

开发博客系统的时候使用了 NVelocity 模版引擎,在列表页的时候需要使用分页,所以自己写了个生成 Html 代码的分页。

使用NVelocity生成列表页面的时候比如是第一页把参数“1”和列表页的URL等传进去,生成当前页面的分页,然后用NVelocity替换生成后的代码,需要生成的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="pager">
    <div class="pagerbox">
        <a href="/?cid=0&tag=&key=&page=1">首页</a>
        <a href="/?cid=0&tag=&key=&page=1">上一页</a>
        <b>1</b>
        <a href="/?cid=0&tag=&key=&page=2">2</a>
        <a href="/?cid=0&tag=&key=&page=3">3</a>
        <a href="/?cid=0&tag=&key=&page=4">4</a>
        <a href="/?cid=0&tag=&key=&page=2">下一页</a>
        <a href="/?cid=0&tag=&key=&page=6">尾页</a>
    </div>
    <span>当前第1页,共6页, 共有53条记录。</span>
</div>

先来个效果图:

样式代码:

1
2
3
4
5
6
7
.pagerbox { float: left; }
.pager { margin: 20px 0px; }
    .pager span { line-height: 28px; float: right; }
.pagerbox a, .pagerbox b { background-color: #009AD9; border: 1px solid #009AD9; }
.pager .pagerbox a { color: #FFF; float: left; line-height: 28px; padding: 0 10px; margin-right: 2px; }
    .pager .pagerbox a:hover { color: #000000; border: 1px solid #148ec0; background: #f0f0f0; }
.pager .pagerbox b { float: left; font-weight: normal; padding: 0 10px; background: #fff; line-height: 28px; margin-right: 2px; }

后台代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
///<summary>
  ///打印分页信息。
  ///</summary>
  ///<param name="recordCount">记录总数。</param>
  ///<param name="pageIndex">分页索引。</param>
  ///<param name="pageSize">分页大小。</param>
  ///<param name="pageLink">分页地址,{0}为当前页匹配。</param>
  /// <param name="nextPageText">下一页显示文本。</param>
  /// <param name="prevPageText">上一页显示文本。</param>
  /// <param name="homePageText">首页显示文本。</param>
  /// <param name="lastPageText">尾页显示文本。</param>
  /// <param name="displayMsg">显示消息文本。</param>
  /// <returns>返回分页的 Html 代码。</returns>
  public static string Print(int recordCount, int pageIndex, int pageSize, string pageLink, string nextPageText, string prevPageText, string homePageText, string lastPageText, string displayMsg)
  {
      if (pageSize < 1) { pageSize = 1; }
      if (pageIndex < 1) { pageIndex = 1; }
      //开始
      string html = string.Empty;
      string htmlLeftPage = string.Empty;
      string htmlRightPage = string.Empty;
      if (pageLink == string.Empty) { pageLink = "?"; }
      //开始计算
      long pageCount = 0;
      if (recordCount % pageSize == 0)
      {
          pageCount = recordCount / pageSize;
      }
      else
      {
          pageCount = (recordCount / pageSize) + 1;
      }
      for (int i = 2; i >= 1; i--)
      {
          if (pageIndex - i >= 1)
          {
              htmlLeftPage += string.Format("<a href=\"{0}\">{1}</a>", string.Format(pageLink, (pageIndex - i)), pageIndex - i);
          }
      }
      for (int j = 1; j <= 2; j++)
      {
          if (pageIndex + j <= pageCount)
          {
              htmlRightPage += string.Format("<a href=\"{0}\">{1}</a>", string.Format(pageLink, (pageIndex + j)), pageIndex + j);
          }
      }
      long prevPage = pageIndex - 1;
      if (prevPage < 1) { prevPage = 1; }
      long nextPage = pageIndex + 1;
      if (nextPage > pageCount) { nextPage = pageCount; }
      //最后处理
      if (nextPage < 1) { nextPage = 1; }
      if (pageCount < 1) { pageCount = 1; }
      //计算结束
   string leftHtml = string.Format("<a {0}>{1}</a><a {2}>{3}</a>{4}", pageIndex != 1 ? string.Format("href=\"{0}\"", string.Format(pageLink, 1)) : "", homePageText, pageIndex != prevPage ? string.Format("href=\"{0}\"", string.Format(pageLink, prevPage)) : "", prevPageText, htmlLeftPage);
      string rightHtml = string.Format("{0}<a {1}>{2}</a><a {3}>{4}</a>", htmlRightPage, pageIndex != nextPage ? string.Format("href=\"{0}\"", string.Format(pageLink, nextPage)) : "", nextPageText, pageIndex != pageCount ? string.Format("href=\"{0}\"", string.Format(pageLink, pageCount)) : "", lastPageText);
      html = string.Format("<div class=\"pagerbox\">{0}<b>{1}</b>{2}</div><span>{3}</span>", leftHtml, pageIndex, rightHtml, string.Format(displayMsg, pageIndex, pageCount, recordCount));
      return html;
  }
posted @   Charles Zhang  阅读(4205)  评论(6编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示