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. C#面向对象中类的继承和扫描顺序和接口

    1.   类的分类:普通基类.抽象基类(abstract  class)1.   类的扫描顺序:a.先近后远 b.(向上扫描)以谁身份声明的变量就在谁身上开始扫描, 2.   扫描的特殊情况:普通基类 ...

  2. 关于json_encode转数组为json对象时里有数组格式数据的问题

    前言:这次是给一款小程序提供接口时发现的 别的不多说,下面直接看出现问题的json数据 可以看到,这是一个大的json对象,是由多维数组组成,一般api接口提供的也是这种格式. 但是仔细看红框中的内容 ...

  3. Day30--Python--struct, socketserver

    1. struct struct.pack 打包 def pack(fmt, *args): # known case of _struct.pack """ pack( ...

  4. 0基础如何学Android开发

    链接:http://pan.baidu.com/s/1bIEIse 密码:ky7w https://pan.baidu.com/s/1i53bs6x提取码:0pwthttps://www.zhihu. ...

  5. react一看就会的简单路由设置

    不管是vue还是react  这种单页面的框架一定都少不了路由 下面给大家讲讲在实际项目中react的路由设置 第一步: 在src目录下新建一个目录route  在该目录下新建一个index.js用于 ...

  6. 用css巧妙实现移动端横向滑动展示功能

    前言:记得以前处理移动端横向滑动展示都是去用js去解决的,要用js进行蛮多处理,要算li的宽度,然后还要用js设置ul盒子的宽度,又要设置最大滑动距离,最小滑动距离等等.......但是现在发现用cs ...

  7. Vuex异步请求数据通过computed计算属性值

    问题描述: 使用Vuex管理数据时,在组件内使用$emit分发事件后,获取回来的数据要自动更新到该组件内,需要使用computed来计算更新. 一开始尝试使用赋值给data的方法,后来发现重新发起aj ...

  8. hystrix实战之javanica

    spingboot2.0.3集成hystrix的,访问dashboard的另外一种方式: https://blog.csdn.net/qq_38455201/article/details/80783 ...

  9. (链表 set) leetcode 817. Linked List Components

    We are given head, the head node of a linked list containing unique integer values. We are also give ...

  10. (最大连续和/最大子段和) P1115 最大子段和 洛谷

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一个正整数NN,表示了序列的长度. 第二行包含NN个绝对值不大于1000010000的整数A_iAi ...