绑定路由的MVC2分页扩展
许久没写博客,结果越变越懒。杯具到,一年一篇博文的惨淡下场。以后还是要多写点东西,不然别人以为你那个啥。。呵呵
年初玩了一下MVC,还是因为懒,没下MVC3,直接用自带的MVC2。哪个版本更这分页扩展没多大关系,这边共享一下这个分页的扩展。在写之前看了下,他们都是request,页面参数。实在不美观。so..果断改之
View Code
1 /*******************************************************************
2
3 * * Copyright (C) Kurodo
4
5 * * All rights reserved.
6
7 * *
8
9 * Author: Kurodo
10
11 * Create Date:2011-3-18 8:55:54
12
13 * Description:PagerExtensions.cs
14
15 * *
16
17 * * Date Author Description
18
19 * *****************************************************************/
20
21 using System;
22 using System.Collections.Generic;
23 using System.Linq;
24 using System.Web;
25 using System.Web.Mvc;
26 using System.Web.Routing;
27 using System.Web.Mvc.Html;
28 using System.Text;
29
30 namespace Kurodo.Extensions
31 {
32 /// <summary>
33 /// 分页扩展
34 /// </summary>
35 public static class PagerExtensions
36 {
37 /// <summary>
38 /// 分页Pager显示
39 /// </summary>
40 /// <param name="html"></param>
41 /// <param name="keyWord">标识当前页码的参数</param>
42 /// <param name="pageSize">每页显示</param>
43 /// <param name="totalCount">总数据量</param>
44 /// <returns></returns>
45 public static MvcHtmlString Pager(this HtmlHelper html, string keyWord, int pageSize, int totalCount)
46 {
47 int currentPage = 1; //当前页
48 var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
49 var routeMap = new System.Web.Routing.RouteValueDictionary(html.ViewContext.RouteData.Values);
50 var output = new System.Text.StringBuilder();
51
52 if (routeMap[keyWord] != null)
53 {
54 int.TryParse(routeMap[keyWord].ToString(), out currentPage);
55 }
56
57 if (currentPage <= 0)
58 currentPage = 1;
59 if (totalPages > 1)
60 {
61 if (currentPage != 1)
62 {
63 //处理首页连接
64 routeMap[keyWord] = 1;
65 output.AppendFormat("{0} ", html.RouteLink("首页", routeMap));
66 }
67 if (currentPage > 1)
68 {
69 //处理上一页的连接
70 routeMap[keyWord] = currentPage - 1;
71 output.Append(html.RouteLink("上一页", routeMap));
72 }
73 else
74 {
75 output.Append("上一页");
76 }
77 output.Append(" ");
78 int currint = 5;
79 for (int i = 0; i <= 10; i++)
80 {
81 //一共最多显示10个页码,前面5个,后面5个
82 if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
83 if (currint == i)
84 {
85 //当前页处理
86 output.Append(string.Format("<span class\"now\">{0}</span>", currentPage));
87 }
88 else
89 {
90 //一般页处理
91 routeMap[keyWord] = currentPage + i - currint;
92 output.Append(html.RouteLink((currentPage + i - currint).ToString(), routeMap));
93 }
94 output.Append(" ");
95 }
96
97 if (currentPage < totalPages)
98 {
99 //处理下一页的链接
100 routeMap[keyWord] = currentPage + 1;
101 output.Append(html.RouteLink("下一页", routeMap));
102 }
103 else
104 {
105 output.Append("下一页");
106 }
107 output.Append(" ");
108 if (currentPage != totalPages)
109 {
110 routeMap[keyWord] = totalPages;
111 output.Append(html.RouteLink("末页", routeMap));
112 }
113 output.Append(" ");
114 }
115 output.AppendFormat("{0} / {1}", currentPage, totalPages);//这个统计加不加都行
116
117 return MvcHtmlString.Create(output.ToString());
118 }
119 }
120 }
2
3 * * Copyright (C) Kurodo
4
5 * * All rights reserved.
6
7 * *
8
9 * Author: Kurodo
10
11 * Create Date:2011-3-18 8:55:54
12
13 * Description:PagerExtensions.cs
14
15 * *
16
17 * * Date Author Description
18
19 * *****************************************************************/
20
21 using System;
22 using System.Collections.Generic;
23 using System.Linq;
24 using System.Web;
25 using System.Web.Mvc;
26 using System.Web.Routing;
27 using System.Web.Mvc.Html;
28 using System.Text;
29
30 namespace Kurodo.Extensions
31 {
32 /// <summary>
33 /// 分页扩展
34 /// </summary>
35 public static class PagerExtensions
36 {
37 /// <summary>
38 /// 分页Pager显示
39 /// </summary>
40 /// <param name="html"></param>
41 /// <param name="keyWord">标识当前页码的参数</param>
42 /// <param name="pageSize">每页显示</param>
43 /// <param name="totalCount">总数据量</param>
44 /// <returns></returns>
45 public static MvcHtmlString Pager(this HtmlHelper html, string keyWord, int pageSize, int totalCount)
46 {
47 int currentPage = 1; //当前页
48 var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
49 var routeMap = new System.Web.Routing.RouteValueDictionary(html.ViewContext.RouteData.Values);
50 var output = new System.Text.StringBuilder();
51
52 if (routeMap[keyWord] != null)
53 {
54 int.TryParse(routeMap[keyWord].ToString(), out currentPage);
55 }
56
57 if (currentPage <= 0)
58 currentPage = 1;
59 if (totalPages > 1)
60 {
61 if (currentPage != 1)
62 {
63 //处理首页连接
64 routeMap[keyWord] = 1;
65 output.AppendFormat("{0} ", html.RouteLink("首页", routeMap));
66 }
67 if (currentPage > 1)
68 {
69 //处理上一页的连接
70 routeMap[keyWord] = currentPage - 1;
71 output.Append(html.RouteLink("上一页", routeMap));
72 }
73 else
74 {
75 output.Append("上一页");
76 }
77 output.Append(" ");
78 int currint = 5;
79 for (int i = 0; i <= 10; i++)
80 {
81 //一共最多显示10个页码,前面5个,后面5个
82 if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
83 if (currint == i)
84 {
85 //当前页处理
86 output.Append(string.Format("<span class\"now\">{0}</span>", currentPage));
87 }
88 else
89 {
90 //一般页处理
91 routeMap[keyWord] = currentPage + i - currint;
92 output.Append(html.RouteLink((currentPage + i - currint).ToString(), routeMap));
93 }
94 output.Append(" ");
95 }
96
97 if (currentPage < totalPages)
98 {
99 //处理下一页的链接
100 routeMap[keyWord] = currentPage + 1;
101 output.Append(html.RouteLink("下一页", routeMap));
102 }
103 else
104 {
105 output.Append("下一页");
106 }
107 output.Append(" ");
108 if (currentPage != totalPages)
109 {
110 routeMap[keyWord] = totalPages;
111 output.Append(html.RouteLink("末页", routeMap));
112 }
113 output.Append(" ");
114 }
115 output.AppendFormat("{0} / {1}", currentPage, totalPages);//这个统计加不加都行
116
117 return MvcHtmlString.Create(output.ToString());
118 }
119 }
120 }
然后在视图上这样调用即可
<%:Html.Pager("page",20,TotalCount) %>
如果你是MVC3,就是这样
@Html.Pager("page",20,TotalCount)
作者:Kurodo
出处:http://Kurodo.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://Kurodo.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。