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. Django 配置QQ邮箱连接

    首先要在settings.py内进行配置 # 邮件服务配置文件 EMAIL_USE_SSL = True # 邮箱服务 EMAIL_HOST = 'smtp.qq.com' # 端口号 EMAIL_P ...

  2. 关于递推算法求解约瑟夫环问题P(n,m,k,s)

    一. 问题描述 已知n个人,分别以编号1,2,3,...,n表示,围坐在一张圆桌周围.从编号为k的人开始报数1,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列:依此规律重复下去, ...

  3. pytest 2.测试用例setup和teardown

    之前我写的unittest的setup和teardown,还有setupClass和teardownClass(需要配合@classmethod装饰器一起使用),接下来就介绍pytest的类似于这类的 ...

  4. adb 查看包名或其他

    http://blog.sina.com.cn/s/blog_5b478f870102v5bo.html

  5. mysql中使用存储过程方法中的注意事项

    public function getFxOrderList($openId,$condition='',$curentPage=1,$pagesize =10){ return $this-> ...

  6. 使用perconna xtrabackup备份脚本

    使用percona xtrabackup对两个数据库实例进行备份,备份的脚本如下所示: #!/bin/bash BASEDIR="/usr/local/mysql" BIN=&qu ...

  7. Constructor >> @Autowired >> @PostConstruct

    从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入.所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入是发 ...

  8. jsr223 md5

    import java.security.MessageDigest; String content = "xxx"; MessageDigest digest = Message ...

  9. Tensorflow object detection API 搭建物体识别模型(四)

    四.模型测试 1)下载文件 在已经阅读并且实践过前3篇文章的情况下,读者会有一些文件夹.因为每个读者的实际操作不同,则文件夹中的内容不同.为了保持本篇文章的独立性,制作了可以独立运行的文件夹目标检测. ...

  10. saltstack SLS 安装haproxy+nginx实例分析学习

    本文主要以实例的形式去熟悉sls的部署流程及相关模块的使用 文件下载:https://github.com/unixhot/saltbook-code 目录结构 [root@k8s_master sa ...