页码条--字符串拼接--重写HtmlHelper
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的更多相关文章
- 精简版StringBuilder,提速字符串拼接
编写目的 在频繁的字符串拼接中,为了提升程序的性能,我们往往会用StringBuilder代替String+=String这样的操作; 而我在实际编码中发现,大部分情况下我用到的只是StringBui ...
- Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
[请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...
- golang的字符串拼接
常用拼接方法 字符串拼接在日常开发中是很常见的需求,目前有两种普遍做法: 一种是直接用 += 来拼接 s1 := "Hello" s2 := "World" s ...
- 操作 html 的时候是使用 dom 方法还是字符串拼接?
比如一个列表里面有很多个 li,要给他们加上数据.但多少个 li 是不确定的,由后台数据确定.这时候,就要动态生成 html 内容了. 那么,这个过程, 是使用 += 方法把标签.数据进行一个个的字符 ...
- CTE 中字符串拼接
1>cte语法 1.1>基础语句和递归语句中必须有字段 1.2>最后只能跟一条查询语句 1.3>字符串拼接,要将拼接的字段转成字符串类型,cast(fieldName as n ...
- asp.net自制分页页码条控件
用过微软的服务器控件分页的人都知道~那卡的一A啊~ 遂想自制分页页码条控件以备不时之需. 走你~ public static class PageShow { /// <summary> ...
- 为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?
之前在阅读<阿里巴巴Java开发手册>时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符 ...
- 羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的<阿里巴巴 Java 开发手册>上有一段内容说:"循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作 ...
- 使用 SQL的 for xml path来进行字符串拼接
本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3: ...
随机推荐
- POJ1635 树的最小表示
/*zoj1990Subway Tree Systems题目大意:初始时站在树的根节点,若朝着远离根的方向走,记录“”,接近根的方向走记录“”.并且树的每一条边只能来回走一次(即向下和返回).一个合法 ...
- Kotlin 介绍
Kotlin (0:00) 大家好,我是 Michael Pardo,今天我要给大家展示一下 Kotlin 这门语言,同时看看他如何让你在 Android 开发的时候更开心,更有效率. Kotlin ...
- Scala 的确棒
我的确认为计算机学院应该开一门 Scala 的语言课程. 在这篇文章中,我会讲述为什么我会有这样的想法,在此之前,有几点我想要先声明一下: 本文无意对编程语言进行评比,我要讲述的主体是为什么你应该学习 ...
- 通过JDBK操作数据库
一.配置程序--让我们程序能找到数据库的驱动jar包1.把.jar文件复制到项目中去,整合的时候方便.2.在eclipse项目右击"构建路径"--"配置构建路径" ...
- RPN-逆波兰计算器-中缀表达式转后缀表达式-javascript
1.利用栈(Stack)来存储操作数和操作符: 2.包含中缀表达式转后缀表达式的函数,这个是难点,也是关键点: 2.1.将输入字符串转为数组: 2.2.对转换来的字符进行遍历:创建一个数组,用来给存储 ...
- 处理GitHub不允许上传大于100M文件问题
第一步输入命令 cd /Users/Dora/Desktop/XXX(cd后面的这个路径要换成你自己项目的路径) 第二步输入命令 git rm --cached/Users/Dora/Desktop/ ...
- SQL基础语句(提升)
1.复制表(只复制结构,源表名:a 新表名:b) select * into b from a where 1<>1 2.拷贝表 insert into b(a,b,c) select d ...
- Java基本
定义类的方法 class 类名{ 属性; 方法; } 属性也叫成员变量,主要用于描述累的状态方法也叫成员方法,主要用于描述类的行为 class Person{ int age; void show() ...
- HDU 4941 Magical Forest(2014 Multi-University Training Contest 7)
思路:将行列离散化,那么就可以用vector 存下10W个点 ,对于交换操作 只需要将行列独立分开标记就行 . r[i] 表示第 i 行存的是 原先的哪行 c[j] 表示 第 j ...
- Winform 支持高清屏(High DPI) 设置
http://www.cnblogs.com/weiym/p/3555068.htmlhttp://crsouza.com/2015/04/how-to-fix-blurry-windows-form ...