zoukankan      html  css  js  c++  java
  • 绑定路由的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 }

    然后在视图上这样调用即可

    <%:Html.Pager("page",20,TotalCount) %>

    如果你是MVC3,就是这样

    @Html.Pager("page",20,TotalCount)
  • 相关阅读:
    开启sentry权限控制hue
    hive_server2的权限控制
    自带的simple认证
    tableau备份
    tableau分布式添加节点
    升级tableau版本
    tableau日常管理
    mavn Nexus Repository Manager漏洞
    第3章:打造命令行工具
    基于从库+binlog方式恢复数据
  • 原文地址:https://www.cnblogs.com/Kurodo/p/2105207.html
Copyright © 2011-2022 走看看