一个asp.net MVC 的分页代码

简介: 哈哈,这个博客的处女文啦~~ 首先声明,这个分页代码并不是出自我手哈,借用了网上的一段代码,然后加了个css,变的好看一些啦~~ 原作者忘记是谁了,实在找不到了……万分抱歉啊~~ 效果如下:     1 using System; 2  using System.

哈哈,这个博客的处女文啦~~

首先声明,这个分页代码并不是出自我手哈,借用了网上的一段代码,然后加了个css,变的好看一些啦~~

原作者忘记是谁了,实在找不到了……万分抱歉啊~~

效果如下:

 

 

img_405b18b4b6584ae338e0f6ecaf736533.gif
 
   
1 using System;
2   using System.Collections.Generic;
3   using System.Linq;
4   using System.Web;
5   using System.Web.Mvc;
6   using System.Web.Routing;
7   using System.Text;
8   using System.Web.Mvc.Html;
9   namespace application.Helpers
10 {
11 public static class PagerExtensions
12 {
13 /* helper分页
14 *使用方式:<%@ Import Namespace="ExpoShiep.Helpers" %>
15 *<%=Html.Pager("page",10,100)%> */
16 /// < summary>
17 /// 分页Pager显示
18 /// < /summary>
19 /// < param name="html">< /param>
20 /// < param name="currentPageStr"> 标识当前页码的QueryStringKey < /param>
21 /// < param name="pageSize"> 每页显示 < /param>
22 /// < param name="totalCount"> 总数据量 < /param>
23 /// < returns>< /returns>
24   public static string Pager( this HtmlHelper html, string currentPageStr, int pageSize, int totalCount)
25 {
26 var queryString = html.ViewContext.HttpContext.Request.QueryString;
27 int currentPage = 1 ; // 当前页
28   var totalPages = Math.Max((totalCount + pageSize - 1 ) / pageSize, 1 ); // 总页数
29   var dict = new System.Web.Routing.RouteValueDictionary(html.ViewContext.RouteData.Values);
30 var output = new System.Text.StringBuilder();
31 if ( ! string .IsNullOrEmpty(queryString[currentPageStr]))
32 { // 与相应的QueryString绑定
33 foreach ( string key in queryString.Keys)
34 if (queryString[key] != null && ! string .IsNullOrEmpty(key))
35 dict[key] = queryString[key];
36 int .TryParse(queryString[currentPageStr], out currentPage);
37 }
38 else
39 { // 获取 ~/Page/{page number} 的页号参数
40 int .TryParse(dict[currentPageStr].ToString(), out currentPage);
41 }
42 if (currentPage <= 0 )
43 currentPage = 1 ;
44 if (totalPages > 1 )
45 {
46 if (currentPage != 1 )
47 { // 处理首页连接
48 dict[currentPageStr] = 1 ;
49 output.AppendFormat( " {0} " , html.RouteLink( " 首页 " , dict));
50 }
51 if (currentPage > 1 )
52 { // 处理上一页的连接
53 dict[currentPageStr] = currentPage - 1 ;
54 output.Append(html.RouteLink( " 上一页 " , dict));
55 }
56 else
57 {
58 // output.Append("上一页");
59 dict[currentPageStr] = currentPage;
60 output.Append(html.RouteLink( " 上一页 " , dict));
61 }
62 output.Append( " " );
63 int currint = 5 ;
64 for ( int i = 0 ; i <= 10 ; i ++ )
65 { // 一共最多显示10个页码,前面5个,后面5个
66 if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
67 if (currint == i)
68 { // 当前页处理
69 // output.Append(string.Format("[{0}]", currentPage));
70 dict[currentPageStr] = currentPage;
71 output.AppendFormat( " <span class=\ " current\ " >{0}</span> " , currentPage);
72 }
73 else
74 {
75 // 一般页处理
76 dict[currentPageStr] = currentPage + i - currint;
77 output.Append(html.RouteLink((currentPage + i - currint).ToString(), dict));
78 }
79 output.Append( " " );
80 }
81 if (currentPage < totalPages)
82 {
83 // 处理下一页的链接
84 dict[currentPageStr] = currentPage + 1 ;
85 output.Append(html.RouteLink( " 下一页 " , dict));
86 }
87 else
88 {
89 // output.Append("下一页");
90 dict[currentPageStr] = currentPage;
91 output.Append(html.RouteLink( " 下一页 " , dict));
92 }
93 output.Append( " " );
94 if (currentPage != totalPages)
95 {
96 dict[currentPageStr] = totalPages;
97 output.Append(html.RouteLink( " 末页 " , dict));
98 }
99 output.Append( " " );
100 }
101 output.AppendFormat( " {0} / {1} " , currentPage, totalPages); // 这个统计加不加都行
102 return output.ToString();
103 }
104 }
105 }

 

CSS:

 

img_405b18b4b6584ae338e0f6ecaf736533.gif
 
   
1 .pager
2 {
3 font - size: 12px;
4 margin: 8px 0 ;
5 padding: 3px 0 3px;
6 text - align: left;
7 }
8
9 .pager .current
10 {
11 background - color: #06c;
12 border: 1px solid # 009 ;
13 color: #fff;
14 font - weight: bold;
15 margin - top: 4px;
16 padding: 3px 5px;
17 text - align: center;
18 }
19
20 .pager a
21 {
22 margin: 4px 3px;
23 border: 1px solid #9AAFE5;
24 padding: 3px 5px;
25 text - align: center;
26 text - decoration: none;
27 color: #2E6AB1;
28 }
29
30 .pager .pagerInput
31 {
32 padding: 3px 0 0 0 ;
33 border: 1px solid #9AAFE5;
34 text - align: center;
35 text - decoration: none;
36 height: 16px;
37 width: 30px;
38 }
39 .pager .pagerButton
40 {
41 border: 1px solid #9AAFE5;
42 cursor: pointer;
43 }
44

 

 

View中使用:

 

 
  
1 < div class = " pager " >
2 <%= Html.Pager( " page " , 10 , 300 )) %>
3 </ div >

 

目录
相关文章
|
4月前
|
API
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
|
15天前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
2月前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
31 1
|
2月前
|
前端开发 JavaScript C#
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
46 7
|
4月前
|
Kubernetes 监控 Devops
【独家揭秘】.NET项目中的DevOps实践:从代码提交到生产部署,你不知道的那些事!
【8月更文挑战第28天】.NET 项目中的 DevOps 实践贯穿代码提交到生产部署全流程,涵盖健壮的源代码管理、GitFlow 工作流、持续集成与部署、容器化及监控日志记录。通过 Git、CI/CD 工具、Kubernetes 及日志框架的最佳实践应用,显著提升软件开发效率与质量。本文通过具体示例,助力开发者构建高效可靠的 DevOps 流程,确保项目成功交付。
90 0
|
4月前
|
API
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
74 0
|
4月前
|
微服务 API Java
微服务架构大揭秘!Play Framework如何助力构建松耦合系统?一场技术革命即将上演!
【8月更文挑战第31天】互联网技术飞速发展,微服务架构成为企业级应用主流。微服务将单一应用拆分成多个小服务,通过轻量级通信机制交互。高性能Java Web框架Play Framework具备轻量级、易扩展特性,适合构建微服务。本文探讨使用Play Framework构建松耦合微服务系统的方法。Play采用响应式编程模型,支持模块化开发,提供丰富生态系统,便于快速构建功能完善的微服务。
51 0
|
4月前
|
SQL 开发框架 .NET
代码更简洁,开发更高效:从零开始使用Entity Framework Core与传统ADO.NET构建数据持久化层的比较
【8月更文挑战第31天】在.NET平台上开发数据驱动应用时,选择合适的ORM框架至关重要。本文通过对比传统的ADO.NET和现代的Entity Framework Core (EF Core),展示了如何从零开始构建数据持久化层。ADO.NET虽强大灵活,但需要大量手写代码;EF Core则简化了数据访问,支持LINQ查询,自动生成SQL命令,提升开发效率。从创建.NET Core项目、定义数据模型、配置`DbContext`到执行数据库操作,EF Core提供了一套流畅的API,使数据持久化层的构建变得简单直接。
49 0

相关实验场景

更多