一个asp.net MVC 的分页代码

摘要:
哈哈,这篇博客的处女作~~首先,这个页面代码不是我自己的。我借用了一段在线代码,然后添加了一个CSS以使其更漂亮~~原来的作者忘记了它是谁,找不到…字符串。IsNullOrEmpty)32{//与对应的QueryString 33foreach34if(QueryString[key]!String.IsNullOrEmpty)35dict[key]=QueryString[key];36int.TryParse;37}38else39{//获取~/page/{pagenumber}的页码参数40int.Try Parse;41}42if43currentPage=1;44if45{46if(当前页面!

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

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

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

效果如下:

一个asp.net MVC 的分页代码第1张

一个asp.net MVC 的分页代码第2张一个asp.net MVC 的分页代码第3张
1 usingSystem;
2 usingSystem.Collections.Generic;
3 usingSystem.Linq;
4 usingSystem.Web;
5 usingSystem.Web.Mvc;
6 usingSystem.Web.Routing;
7 usingSystem.Text;
8 usingSystem.Web.Mvc.Html;
9 namespaceapplication.Helpers
10 {
11 publicstaticclassPagerExtensions
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 publicstaticstringPager(thisHtmlHelper html, stringcurrentPageStr, intpageSize, inttotalCount)
25 {
26 var queryString =html.ViewContext.HttpContext.Request.QueryString;
27 intcurrentPage =1; //当前页 28 var totalPages =Math.Max((totalCount +pageSize -1) /pageSize, 1); //总页数 29 var dict =newSystem.Web.Routing.RouteValueDictionary(html.ViewContext.RouteData.Values);
30 var output =newSystem.Text.StringBuilder();
31 if(!string.IsNullOrEmpty(queryString[currentPageStr]))
32 {//与相应的QueryString绑定 33 foreach(stringkey inqueryString.Keys)
34 if(queryString[key] !=null&&!string.IsNullOrEmpty(key))
35 dict[key] =queryString[key];
36 int.TryParse(queryString[currentPageStr], outcurrentPage);
37 }
38 else39 {//获取 ~/Page/{page number} 的页号参数 40 int.TryParse(dict[currentPageStr].ToString(), outcurrentPage);
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 else57 {
58 //output.Append("上一页");59 dict[currentPageStr] =currentPage;
60 output.Append(html.RouteLink("上一页", dict));
61 }
62 output.Append("");
63 intcurrint =5;
64 for(inti =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 else74 {
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 else88 {
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 returnoutput.ToString();
103 }
104 }
105 }

CSS:

一个asp.net MVC 的分页代码第4张一个asp.net MVC 的分页代码第5张
1 .pager
2 {
3 font-size: 12px;
4 margin: 8px 0;
5 padding: 3px 03px;
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 000;
33 border: 1px solid #9AAFE5;
34 text-align: center;
35 text-decoration: none;
36 height: 16px;
37 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>

免责声明:文章转载自《一个asp.net MVC 的分页代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇最长上升子序列 (LIS算法(nlong(n)))Android View如何获取焦点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

【资料】2021年最网红的FPGA开发板之一——DE10-Nano (SOC FPGA入门推荐!)

DE10 Nano开发板是2021最受欢迎的FPGA开发板之一。除了广泛应用于物联网、边缘计算、硬件加速、AI和EDA教育课程之外,许多爱好者还在网络上日益流行的开源复古游戏项目Mister中使用它。让我们来看看DE10 Nano提供的材料:Youjing官方网站上的材料(中文手册可用!!!23~课程培训材料2018产学合作培训材料基于2018产学协作培训材...

C#控件重绘学习(一)

由于需要制作工业控制软件,传统的控制已不能满足实际要求,因此控制的重新绘制迫在眉睫。因为考研花费了很多时间,而C#的学习已经搁浅了很长时间,所以我打算借此机会仔细彻底地研究控件的重新绘制。首先,查看Button的旧背景:namespace:SystemWindows.Forms程序集:System.Windows.FormsButton具有太多属性:例如Ba...

C#Win32API编程之PostMessage

本文以C#调用Win32API函数PostMessage完成指定表单的后台鼠标和键盘模拟为例,大致解释了C#调用非托管代码和Window的消息处理机制。我们可以将PostMessage用于函数。成功与否在很大程度上取决于我们传达的信息是否真实。消息表明消息是什么。请原谅我先讲故事。我希望先解释一下PostMessage函数。这是一个异步操作,如下图所示:调用...

sqlserver 计算 百分比

selectltrim+'%'As百分比NUMERIC(P,S)P的默认值是:38S的默认值是:-84~127numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数,例如numeric(5,2)是总位数为5,小数点后为2位的数,也就是说这个字段的整数位最大是3位。...

JavaScript算法学习:获取字符串最后一位方法及判断是否以指定字符串开始或结尾

Str.substr,其中start是必需的参数,表示坐标的起始位置。正值在正方向计数,负值在反方向计数,长度是可选参数,表示从起始位置开始计数的数字。...

oracle的序列号(sequence)

Oracle的自动递增列应使用序列号。在初始化阶段,需要手动创建序列,然后在插入序列时手动读取分配给相关字段(如ID)的序列的nextval。这很麻烦。但是,这对于SQL Server来说不是问题,可以获得。oracle的序列号也有缓存。默认情况下,一次生成20个。如果没有用完,它们可能会丢失,这可能会导致ID不一致。此外,有时这可能会引起误解。例如,我有一...