public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int pageCount)
        {
            //处理Url保留除pageIndex和pageSize以外的其他参数
            var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
            redirectTo += "?";
            string strPageIndex = "pageIndex";
            string strPageSize = "pageSize";
            foreach (string k in htmlHelper.ViewContext.RequestContext.HttpContext.Request.QueryString.Keys)
            {
                if (string.Compare(k, strPageIndex, true) != 0 && string.Compare(k, strPageSize, true) != 0)
                {
                    redirectTo += k + "=" + htmlHelper.ViewContext.RequestContext.HttpContext.Request.QueryString[k] + "&";
                }
            }
            redirectTo = redirectTo.TrimEnd(new char[] { '&' });

pageSize = pageSize == 0 ? 3 : pageSize;
            // var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
            var totalPages = pageCount;
            var output = new StringBuilder();
            if (totalPages > 1)
            {
                if (currentPage > 1)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>上一页</a></span></li> ", redirectTo, currentPage - 1, pageSize);
                }
                if (currentPage != 1)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>1</a></span></li> ", redirectTo, 1, pageSize);
                }
                if (currentPage > 3)
                {
                    output.AppendFormat("<li ><span><a class='pageLink'>...</a></span></li> ");
                }
                if (currentPage > 2)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, currentPage - 1, pageSize, currentPage - 1);
                }
                //当前页
                if (currentPage > 0 && currentPage <= totalPages)
                {
                    output.AppendFormat("<li class='active'><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, currentPage, pageSize, currentPage);
                }
                if (currentPage + 1 < totalPages)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, currentPage + 1, pageSize, currentPage + 1);

}
                if (currentPage + 2 < totalPages)
                {
                    output.AppendFormat("<li ><span><a class='pageLink'>...</a></span></li> ");

}
                if (currentPage != totalPages)
                {
                    output.AppendFormat("<li ><span><a class='pageLink' href='{0}&pageIndex={1}&pageSize={2}'>{3}</a></span></li> ", redirectTo, totalPages, pageSize, totalPages);
                }
                if (currentPage < totalPages)
                {
                    output.AppendFormat("<li ><span><a class=''  href='{0}&pageIndex={1}&pageSize={2}'>下一页</a></span></li> ", redirectTo, currentPage + 1, pageSize);
                }
            }
            return new HtmlString(output.ToString());
        }

页码条--字符串拼接--重写HtmlHelper的更多相关文章

  1. 精简版StringBuilder,提速字符串拼接

    编写目的 在频繁的字符串拼接中,为了提升程序的性能,我们往往会用StringBuilder代替String+=String这样的操作; 而我在实际编码中发现,大部分情况下我用到的只是StringBui ...

  2. Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次

    [请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...

  3. golang的字符串拼接

    常用拼接方法 字符串拼接在日常开发中是很常见的需求,目前有两种普遍做法: 一种是直接用 += 来拼接 s1 := "Hello" s2 := "World" s ...

  4. 操作 html 的时候是使用 dom 方法还是字符串拼接?

    比如一个列表里面有很多个 li,要给他们加上数据.但多少个 li 是不确定的,由后台数据确定.这时候,就要动态生成 html 内容了. 那么,这个过程, 是使用 += 方法把标签.数据进行一个个的字符 ...

  5. CTE 中字符串拼接

    1>cte语法 1.1>基础语句和递归语句中必须有字段 1.2>最后只能跟一条查询语句 1.3>字符串拼接,要将拼接的字段转成字符串类型,cast(fieldName as n ...

  6. asp.net自制分页页码条控件

    用过微软的服务器控件分页的人都知道~那卡的一A啊~ 遂想自制分页页码条控件以备不时之需. 走你~ public static class PageShow { /// <summary> ...

  7. 为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

    之前在阅读<阿里巴巴Java开发手册>时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符 ...

  8. 羞,Java 字符串拼接竟然有这么多姿势

    二哥,我今年大二,看你分享的<阿里巴巴 Java 开发手册>上有一段内容说:"循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作 ...

  9. 使用 SQL的 for xml path来进行字符串拼接

    本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3: ...

随机推荐

  1. [原创]WinForm分页控件制作

    先简单说一下思路: 1.做一个分页控件的导航类,即记录总页数.当前页.每页记录数,下一页.上一页.跳转等操作的页数变更. class PageNavigation{/// <summary> ...

  2. ShellShock 攻击实验

    一. 实验描述 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发.在本实验中,学生需要亲手重现攻击来理解该漏洞,并回答一些问 ...

  3. Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门

    一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...

  4. JDK安装与环境变量配置

    1.安装JDK 选择安装目录 安装过程中会出现两次 安装提示 .第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中.(不能都安装在java文件夹的根目 ...

  5. Ajax 语法

    /*** * ajax语法 * * ***/ $.ajax({ async:false, //同步请求 url:"XXXXX.do",//请求后台地址 data: {"p ...

  6. 设置table距离顶部位置

    //UIEdgeInsetsMake———— UIEdgeInsets insets = {top, left, bottom, right} self.tableView.contentInset ...

  7. php+js实现分页

    使用onclick传递参数时,参数为空分页无效.因此无刷新页面时可利用js重新获取input的值同样通过get地址传递到分页显示的php页面.page参数接收和传递方式必须一致为post或get. j ...

  8. yate: windows下源码下载,配置,编译

    源码下载:使用svn下载checkout:http://voip.null.ro/svn/yate/trunk 配置:(本人使用的是vs2008,故下载的qt工具都是对应2008) 1. 下载并安装q ...

  9. STM32系列单片机IO口模式设置

    STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和 ...

  10. 位置指纹(LF)定位技术简介-室内定位

        信号的多径传播对环境具有依赖性,呈现出非常强的特殊性.对于每个位置而言,该位置上信道的多径结构是惟一的,终端发射的无线电渡经过反射和折射,产生与周围环境密切相关的特定模式的多径信号,这样的多径 ...