Asp.net MVC 简单分页:

 
public static string Pager(int page,int pageSize,int total)
        {
            var htmlStr = "<div class=\"pagination\">";
            var pageCount = Math.Ceiling((double)total / pageSize);
            var request = HttpContext.Current.Request;
            var url = request.RawUrl;
            if (url.IndexOf("page") < 0)
            {
                if (url.IndexOf('?') < 0)
                {
                    url += "?page={0}";
                }
                else
                {
                    url += "&page={0}";
                }
            }
            else
            {
                url = Regex.Replace(url,@"page=\d*", "page={0}");
            }
            if (url.IndexOf("pageSize") < 0)
            {
                if (url.IndexOf('?') < 0)
                {
                    url += "?pageSize={1}";
                }
                else
                {
                    url += "&pageSize={1}";
                }
            }
            else
            {
                url = Regex.Replace(url, @"pageSize=\d*", "pageSize={1}");
            }
            var perEveryTime = 5;//每次显示可点击页数
            var urlTmp = "";
            var count = 0;
            var paginationPreTemplate = "<span class=\"pagination-link pagination-prev\"><a href=\"{0}\">{1}</a></span>";
            var paginationNextTemplate = "<span class=\"pagination-link pagination-next\"><a href=\"{0}\">{1}</a></span>";
            var paginationLinkTemplate = "<span class=\"pagination-link\"><a href=\"{0}\">{1}</a></span>";
            var paginationCurrentTemplate = "<span class=\"pagination-current\">{0}</span>";
            var paginationDotsTemplate = "<span class=\"pagination-link\">...</span>";
            if (page > 1)//前一页
            {
                urlTmp = string.Format(url, page - 1, pageSize);
                htmlStr += string.Format(paginationPreTemplate, urlTmp, "<");
            }
            if (pageCount <= perEveryTime)//将所有页面展示出来
            {
                for (var i = 1; i <= pageCount; i++)
                {
                    if (i == page)
                    {
                        htmlStr += string.Format(paginationCurrentTemplate, page);
                    }
                    else
                    {
                        urlTmp = string.Format(url, i, pageSize);
                        htmlStr += string.Format(paginationLinkTemplate, urlTmp, i);
                    }
                }
            }
            else//只展示perEveryTime个页面,并采用:p1+...+p2p3p4+...p5,的形式
            {
                if (page - 1 <= 2)//不需要加第一个“...”
                {
                    for (var i = 1; i <= page; i++)
                    {
                        if (i == page)
                        {
                            htmlStr += string.Format(paginationCurrentTemplate,page);
                        }
                        else
                        {
                            urlTmp = string.Format(url, i, pageSize);
                            htmlStr += string.Format(paginationLinkTemplate, urlTmp, i);
                        }
                    }
                    count += page;
                }
                else//加第一个“...”
                {
                    urlTmp = string.Format(url, 1, pageSize);
                    htmlStr += string.Format(paginationLinkTemplate, urlTmp, 1);
                    htmlStr += paginationDotsTemplate;
                    urlTmp = string.Format(url, page-1, pageSize);
                    htmlStr += string.Format(paginationLinkTemplate, urlTmp, (page - 1));
                    htmlStr += string.Format(paginationCurrentTemplate, page);
                    count += 3;
                }
                if (pageCount-page <= 2)//不需要加第二个“...”
                {
                    for (var i = page+1; i <= pageCount; i++)
                    {
                        if (i == page)
                        {
                            htmlStr += string.Format(paginationCurrentTemplate, page);
                        }
                        else
                        {
                            urlTmp = string.Format(url, i, pageSize);
                            htmlStr += string.Format(paginationLinkTemplate, urlTmp, i);
                        }
                    }
                }
                else
                {
                   
                    urlTmp = string.Format(url, page+1, pageSize);
                    htmlStr += string.Format(paginationLinkTemplate, urlTmp, page + 1);
                    count++;
                    htmlStr += paginationDotsTemplate;
                    for (var i = pageCount - (perEveryTime-count)+1; i <= pageCount; i++)
                    {
                        urlTmp = string.Format(url, i, pageSize);
                        htmlStr += string.Format(paginationLinkTemplate, urlTmp, i);
                    }
                }
            }
            if (page < pageCount)//后一页
            {
                urlTmp = string.Format(url, page + 1, pageSize);
                htmlStr += string.Format(paginationNextTemplate, urlTmp, ">");
            }
            htmlStr += "</div>";
            return htmlStr;
        }
 
调用:
后台:var t = HtmlHelper2.Pager(page, pageSize, users.Count);
ViewBag.t = t;
 前台:
@Html.Raw(ViewBat.t)
 
 
<style type="text/css">
/* Pagination */
.pagination {text-align:center;padding:0 0 40px;font-family: 'ProximaNovaT-Thin';}
.pagination a,
.pagination a:link,
.pagination a:visited {font-size:20px;color:#999;height:28px;line-height:28px;width:23px;text-align:center;display:inline-block;border-radius:15px;margin:0px 2px;}
.pagination a:focus,
.pagination a:hover,
.pagination a:active {color:#3498db;}
.pagination-link {color:#bbb;}
.pagination-prevk {margin-right:10px;color:#aaa;}
.pagination-next {margin-left:10px;color:#aaa;}
.pagination-current {background:#999;color:#fff;font-family: 'ProximaNovaT-Thin';height:28px;line-height:30px;width:28px;text-align:center;display:inline-block;border-radius:15px;margin:0 2px;}
</style>
 

Asp.net MVC 简单分页 自做简单分页的更多相关文章

  1. ASP.NET MVC 4 插件化架构简单实现-思路篇

    用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC 4 来实现每个插件都可以完全从主站点剥离出来,即使只是一个插 ...

  2. ASP.NET MVC 4 插件化架构简单实现-实例篇

    先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...

  3. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  4. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6

    接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System. ...

  5. 使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目

    步骤: 1. 创建一个asp.net mvc 项目 1.1 项目创建好结构如下 2 通过vs安装EntityFramework框架 install-package entityframework 3. ...

  6. asp.net mvc 简易通用自定义Pager实现分页

    asp.net mvc 自定义Pager实现分页 Intro 一个WEB应用程序中经常会用到数据分页,本文将实现一个简单通用的分页组件,包含一个 PagerModel (用来保存页码信息),一个 Ht ...

  7. 让Asp.net mvc WebAPI 支持OData协议进行分页查询操作

    这是我在用Asp.net mvc WebAPI 支持 OData协议 做分页查询服务时的 个人拙笔. 代码已经开发到oschina上.有兴趣的朋友可以看看,欢迎大家指出不足之处. 看过了园子里的几篇关 ...

  8. 转:ASP.NET MVC利用TryUpdateModel来做资料更新 (一)

    前言有使用 ASP.NET MVC 的朋友们一定多多少少有听过 TryUpdateModel,之前就看了很多有关它的文章,但在专案实务上都未曾实际使用过,而 TryUpdateModel 不仅能利用 ...

  9. 转:ASP.NET MVC利用TryUpdateModel来做资料更新 (二)

    前言 第一篇說明了 TryUpdateModel 的簡單的應用,除了可指定更新的欄位之外也可排除更新特定的欄位,而因為可搭配 Metadata 做欄位驗證為資料又做了一層把關,但在 ASP.NET M ...

随机推荐

  1. mosquitto linux部署

    1:官网下载 https://mosquitto.org/files/source/ 本文使用的是mosquitto-1.5.tar.gz 2:解压mosquitto-1.5.tar.gz tar - ...

  2. 时间函数datetime time

    time模块 time翻译过来就是时间,有我们其实在之前编程的时候有用到过. #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取 ...

  3. spoj-TSUM Triple Sums

    题目描述 题解: 很吊的容斥+$FFT$,但是并不难. 首先,由于有重复,我们要容斥. 怎么办? 记录三个多项式, 只取一个:$w1$; 相同物体拿两个:$w2$; 相同物体拿三个:$w3$; 然后答 ...

  4. Shading-jdbc源码分析-sql词法解析

    前言 前有芋艿大佬已经发过相关分析的文章,自己觉的源码总归要看一下,然后看了就要记录下来(记性很差...),所以就有了这篇文章(以后还要继续更

  5. TeeChart Pro VCL/FMX教程之使用函数

    函数类型 函数特点 TeeChart Pro功能是一个系列,几乎可以是任何系列类型,应用代数函数,数据源是另一个图表系列. 所有函数都派生自TTeeFunction组件并继承TeeFunction的P ...

  6. MySQL 初识

    一.MySQL介绍: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,M ...

  7. viva correction statements

    * List of amendments| No. | Location     | Amendments                                                ...

  8. POJ 1414 Life Line(搜索)

    题意: 给定一块正三角形棋盘,然后给定一些棋子和空位,棋子序号为a(1<=a<=9),group的定义是相邻序号一样的棋子. 然后到C(1<=N<=9)棋手在空位放上自己序号C ...

  9. grunt 使用比较

    http://www.cnblogs.com/yexiaochai/p/3603389.html 最全的uglify使用DEMO http://www.cnblogs.com/artwl/p/3449 ...

  10. ERP类系统设计学习

    文章:分布式.服务化的ERP系统架构设计 文章的方法是对系统进行拆分,拆分成多个子系统.