Model:

   public class PaggerModel
{
public PaggerModel()
{
BarSize = ;
} public PaggerModel(int total, int page, int size) : this()
{
TotalCount = total;
CurrentPageIndex = page;
PageSize = size;
} public PaggerModel(int total, int page, int size, string action, string controller) : this(total, page, size)
{
ActionName = action;
ControllerName = controller;
} public string ActionName { get; set; }
public int BarSize { get; set; }
public string ControllerName { get; set; } /// <summary>
/// 当前页码
/// </summary>
public int CurrentPageIndex
{
get
{
return currentPageIndex;
}
set
{
currentPageIndex = (value < ? : value);
}
} /// <summary>
/// 最后一页页码
/// </summary>
public int LastPageIndex
{
get
{
if (PageSize == )
{
return (int)Math.Ceiling((double)TotalCount / );
}
return (int)Math.Ceiling((double)TotalCount / PageSize) == ? : (int)Math.Ceiling((double)TotalCount / PageSize);
}
} /// <summary>
/// 单个页面显示条目
/// </summary>
public int PageSize
{
get
{
return pageSize;
}
set
{
pageSize = (value < ? : value);
}
} /// <summary>
/// 总条目
/// </summary>
public int TotalCount { get; set; }
private int currentPageIndex { get; set; }
private int pageSize { get; set; }
}

View:

以分部视图的方式渲染:

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

PaggerModel.cshtml:

@model PaggerModel
@{
var config = ViewData["Config"] as PaggerModelConfig;
var configcss = "";
if (config != null)
{
configcss = "pager-init";
}
else
{
config = new PaggerModelConfig { };
}
int current = Model.CurrentPageIndex;
var pageSize = Model.PageSize == ? : Model.PageSize;
var half = (Model.BarSize - ) / ;
var fi = current - half;
var li = current + Model.BarSize - - half;
li = li > Model.LastPageIndex ? Model.LastPageIndex : li;
if (fi < )
{
fi = ;
li = Model.LastPageIndex < Model.BarSize ? Model.LastPageIndex : Model.BarSize;
}
while (fi > && li - fi + < Model.BarSize)
{
--fi;
}
var maxrow = Model.TotalCount > ? : Model.TotalCount;
if (maxrow == ) { maxrow = ; }
} <div class="turn_page_wrap">
<ul class="turn_page_bar df">
<li class="first_page"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p=1, size=pageSize })">首页</a></li>
@if (current > )
{
<li class="page_num"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p=current-1, size=pageSize })">&laquo;</a></li>
}
else
{
<li class="page_num on"><a href="javascript:void(0)">&laquo;</a></li>
}
@for (int i = fi; i <= li; i++)
{
if (i == current)
{
<li class="page_num on"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p = i, size = pageSize })">@i</a></li>
}
else
{
<li class="page_num"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p = i, size = pageSize })">@i</a></li>
}
}
@if (current < Model.LastPageIndex)
{
<li class="page_num"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p = current + 1, size = pageSize })">&raquo;</a></li>
}
else
{
<li class="page_num on"><a href="javascript:void(0)">&raquo;</a></li>
}
<li class="last_page"><a href="@Url.QAction(Model.ActionName, Model.ControllerName, new { p=Model.LastPageIndex, size=pageSize })">尾页</a></li>
</ul>
</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. ASP.NET MVC什么时候使用异步Action

    在没有使用异步Action之前,在Action内,比如有如下的写法: public ActionResult Index() CustomerHelper cHelper = new Customer ...

  2. Windows下安装单机Kafka

    Zookeeper 解压后进入conf目录,复制出一个zoo.cfg,然后进入bin目录,直接运行zkServer.cmd Kafka 首先你得有一个安装包: 解压,目录结构: config目录里面是 ...

  3. RabbitMQ入门-队列

    先建工程 下一步,输入坐标 下一步,输入工程名 先看一下最终目录 修改pom文件 <?xml version="1.0" encoding="UTF-8" ...

  4. IDEA或Webstorm设置Ctrl+滚轮调整字体大小

    按Ctrl+Shift+A,出现搜索框 输入mouse: 点击打开这个设置:勾选 点击ok,之后就可以通过Ctrl+滚轮 调整字体大小了.

  5. Python网络编程之socket编程

    什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...

  6. python对象的不同参数集合

    如下,我们已经有了一个从Contact类继承过来的Friend类 class ContactList(list): def search(self, name): '''Return all cont ...

  7. 数据预处理:独热编码(One-Hot Encoding)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  8. Properties读取properties配置文件

    package cn.rocker.readProperties; import java.io.IOException; import java.io.InputStream; import jav ...

  9. ElasticSearch的插件(Plugins)介绍

    ElasticSearch的插件(Plugins)介绍 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 目前可以扩展ElasticSearch功能的插件有很多,比如:添加自定义的映 ...

  10. C++ 对象实例化(转)

    C++ 对象实例化的一些概念: C++ 如果直接定义类,如classA  a; a存在栈上(也意味着复制了对象a在栈中):如果classA  a = new classA就存在堆中. 一.new创建类 ...