Model:

  1. public class PaggerModel
  2. {
  3. public PaggerModel()
  4. {
  5. BarSize = ;
  6. }
  7.  
  8. public PaggerModel(int total, int page, int size) : this()
  9. {
  10. TotalCount = total;
  11. CurrentPageIndex = page;
  12. PageSize = size;
  13. }
  14.  
  15. public PaggerModel(int total, int page, int size, string action, string controller) : this(total, page, size)
  16. {
  17. ActionName = action;
  18. ControllerName = controller;
  19. }
  20.  
  21. public string ActionName { get; set; }
  22. public int BarSize { get; set; }
  23. public string ControllerName { get; set; }
  24.  
  25. /// <summary>
  26. /// 当前页码
  27. /// </summary>
  28. public int CurrentPageIndex
  29. {
  30. get
  31. {
  32. return currentPageIndex;
  33. }
  34. set
  35. {
  36. currentPageIndex = (value < ? : value);
  37. }
  38. }
  39.  
  40. /// <summary>
  41. /// 最后一页页码
  42. /// </summary>
  43. public int LastPageIndex
  44. {
  45. get
  46. {
  47. if (PageSize == )
  48. {
  49. return (int)Math.Ceiling((double)TotalCount / );
  50. }
  51. return (int)Math.Ceiling((double)TotalCount / PageSize) == ? : (int)Math.Ceiling((double)TotalCount / PageSize);
  52. }
  53. }
  54.  
  55. /// <summary>
  56. /// 单个页面显示条目
  57. /// </summary>
  58. public int PageSize
  59. {
  60. get
  61. {
  62. return pageSize;
  63. }
  64. set
  65. {
  66. pageSize = (value < ? : value);
  67. }
  68. }
  69.  
  70. /// <summary>
  71. /// 总条目
  72. /// </summary>
  73. public int TotalCount { get; set; }
  74. private int currentPageIndex { get; set; }
  75. private int pageSize { get; set; }
  76. }

View:

以分部视图的方式渲染:

  1. @Html.Partial("PaggerModel", ViewBag.PaggerModel as PaggerModel)

PaggerModel.cshtml:

  1. @model PaggerModel
  2. @{
  3. var config = ViewData["Config"] as PaggerModelConfig;
  4. var configcss = "";
  5. if (config != null)
  6. {
  7. configcss = "pager-init";
  8. }
  9. else
  10. {
  11. config = new PaggerModelConfig { };
  12. }
  13. int current = Model.CurrentPageIndex;
  14. var pageSize = Model.PageSize == ? : Model.PageSize;
  15. var half = (Model.BarSize - ) / ;
  16. var fi = current - half;
  17. var li = current + Model.BarSize - - half;
  18. li = li > Model.LastPageIndex ? Model.LastPageIndex : li;
  19. if (fi < )
  20. {
  21. fi = ;
  22. li = Model.LastPageIndex < Model.BarSize ? Model.LastPageIndex : Model.BarSize;
  23. }
  24. while (fi > && li - fi + < Model.BarSize)
  25. {
  26. --fi;
  27. }
  28. var maxrow = Model.TotalCount > ? : Model.TotalCount;
  29. if (maxrow == ) { maxrow = ; }
  30. }
  31.  
  32. <div class="turn_page_wrap">
  33. <ul class="turn_page_bar df">
  34. <li class="first_page"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p=1, size=pageSize })">首页</a></li>
  35. @if (current > )
  36. {
  37. <li class="page_num"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p=current-1, size=pageSize })">&laquo;</a></li>
  38. }
  39. else
  40. {
  41. <li class="page_num on"><a href="javascript:void(0)">&laquo;</a></li>
  42. }
  43. @for (int i = fi; i <= li; i++)
  44. {
  45. if (i == current)
  46. {
  47. <li class="page_num on"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p = i, size = pageSize })">@i</a></li>
  48. }
  49. else
  50. {
  51. <li class="page_num"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p = i, size = pageSize })">@i</a></li>
  52. }
  53. }
  54. @if (current < Model.LastPageIndex)
  55. {
  56. <li class="page_num"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p = current + 1, size = pageSize })">&raquo;</a></li>
  57. }
  58. else
  59. {
  60. <li class="page_num on"><a href="javascript:void(0)">&raquo;</a></li>
  61. }
  62. <li class="last_page"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p=Model.LastPageIndex, size=pageSize })">尾页</a></li>
  63. </ul>
  64. </div>

分页插件通用处理,以asp.net mvc为例的更多相关文章

  1. JPagination分页插件的使用(ASP.NET中使用)

    前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.asp ...

  2. ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...

  3. MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)

    该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的Upda ...

  4. ASP.NET MVC 数据分页思想及解决方案代码

    作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MV ...

  5. asp.net mvc easyui datagrid分页

    提到 asp.net mvc 中的分页,很多是在用aspnetpager,和easyui datagrid结合的分页却不多,本文介绍的是利用easyui 中默认的分页控件,实现asp.net mvc分 ...

  6. 应用程序框架实战三十三:表现层及ASP.NET MVC介绍(二)

    最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和Asp.net Mvc,我将在本篇讨论一些 ...

  7. 表现层及ASP.NET MVC介绍(二)

    表现层及ASP.NET MVC介绍(二) 最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和 ...

  8. Asp.Net MVC以 JSON传值扩展方法

    Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serializ ...

  9. ASP.NET MVC制作404跳转(非302和200)

    前言:距离上次发文已经有几个月了! 这段时间李,制作了一个博客网站,现将博客文章选一些发表到博客园,顺便为自己网站打一下广告! 产生404的原因主要有以下: 1.浏览器和爬虫:某些浏览器会请求网站的f ...

随机推荐

  1. MySQL常用的一些函数

    内容太多,走链接: MySQL函数大全

  2. tail 命令只查看日志中的关键字所在行信息

    tail -f info_log-2019-04-20.log |grep 要查询的关键字

  3. hdu 2476"String painter"(区间DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题意: 给定字符串A,B,每次操作可以将字符串A中区间[ i , j ]的字符变为ch, ...

  4. 类图uml

    画类图或时序的软件类图astah-community-6_9_0-b4c6e9-jre-setup        先写总体架构再写流程图 即先写类图再流程图 b ^ | a a继承b   工具类是us ...

  5. HDU 1003 Max Sum 求区间最大值 (尺取法)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  6. jquery 前端 跨域 jsonp

    1.jsonp 支持get:可以跨域: 2.java 在controller中增加header: /** * 获取用户信息 */ @ResponseBody @RequestMapping(value ...

  7. rancher使用fluentd-pilot收集日志分享

    fluentd-pilot简介 fluentd-pilot是阿里开源的docker日志收集工具,Github项目地址:https://github.com/AliyunContainerService ...

  8. 全角的空格(A1A1)惹的祸!

    #先上干货 “A1A1”是指全角的空格(GBK码): #验证 由上图可以看出半角的空格的HEX为"20": 由上图可以看出,在ANSI格式编码的文件中输入的全角的空格,转换为HEX ...

  9. java io系列10之 FilterInputStream

    FilterInputStream 介绍 FilterInputStream 的作用是用来“封装其它的输入流,并为它们提供额外的功能”.它的常用的子类有BufferedInputStream和Data ...

  10. 设计模式---接口隔离模式之代理模式(Proxy)

    一:概念 代理模式(Proxy Pattern)就是为其他对象提供一种代理以控制对这个对象的访问. 比如: 智能指针 为别人做嫁衣 所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端 ...