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>
 

最新文章

  1. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
  2. jenkins配置源码管理git
  3. JSP+Servlet+JavaBean统计页面在线访问次数
  4. Oracl各个版本的下载地址
  5. Css 特殊或不常用属性
  6. PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入
  7. 设备\Device\Harddisk1\DR1 有一个不对的区块
  8. CentOS里下载百度网盘 / 360 网盘资源的方法
  9. jquerymobile知识点:button与a
  10. JS给元素循环添加事件的问题
  11. pyfits过滤数据更新文件。
  12. Lucene.Net 2.3.1开发介绍 —— 三、索引(二)
  13. 手把手教你树莓派实现简易室内监控系统(C)之BOA服务器的搭建
  14. 【NOIP2016】换教室
  15. linux系统服务详解
  16. mysql的大量的sleep进程解决办法
  17. python 5
  18. echo -e 参数
  19. python风流史
  20. WorldWind源码剖析系列:视景体类Frustum

热门文章

  1. Ubuntu 18的网络配置
  2. Gym-101615C-Fear Factoring(数论)
  3. 在single模式修改密码
  4. JavaScript基础对象---Number
  5. Django关于SQL注意事项
  6. 剑指Offer(书):斐波那契数列
  7. source not found
  8. POJ 2349 Arctic Network(贪心 最小生成树)
  9. Ubuntu16.04 搭建svn
  10. google的三篇论文