许久没写博客,结果越变越懒。杯具到,一年一篇博文的惨淡下场。以后还是要多写点东西,不然别人以为你那个啥。。呵呵
年初玩了一下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 }
然后在视图上这样调用即可
<% :Html.Pager( " page " , 20 ,TotalCount) %>
如果你是MVC3,就是这样
@Html.Pager( " page " , 20 ,TotalCount)
转载于:https://www.cnblogs.com/Kurodo/archive/2011/07/13/2105207.html
相关资源:JAVA上百实例源码以及开源项目