绑定路由的MVC2分页扩展

mac2022-06-30  115

  许久没写博客,结果越变越懒。杯具到,一年一篇博文的惨淡下场。以后还是要多写点东西,不然别人以为你那个啥。。呵呵

 

  年初玩了一下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上百实例源码以及开源项目
最新回复(0)