C# MVC的一种高效分页的html方法
2024-10-15 02:25:14
首先创建一个html的扩展方法,这个方法是万能的,可以直接拿到您的项目中使用:
//主要就是输出分页的超级链接的标签
//自定义分页Helper扩展
public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount)
{
var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
pageSize = pageSize == 0 ? 3 : pageSize;
var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
var output = new StringBuilder();
if (totalPages > 1)
{
//if (currentPage != 1)
{//处理首页连接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize);
}
if (currentPage > 1)
{//处理上一页的连接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize);
}
else
{
// output.Append("<span class='pageLink'>上一页</span>");
} output.Append(" ");
int currint = 5;
for (int i = 0; i <= 10; i++)
{//一共最多显示10个页码,前面5个,后面5个
if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
{
if (currint == i)
{//当前页处理
//output.Append(string.Format("[{0}]", currentPage));
output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage);
}
else
{//一般页处理
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint);
}
}
output.Append(" ");
}
if (currentPage < totalPages)
{//处理下一页的链接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize);
}
else
{
//output.Append("<span class='pageLink'>下一页</span>");
}
output.Append(" ");
if (currentPage != totalPages)
{
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize);
}
output.Append(" ");
}
output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行 return new HtmlString(output.ToString());
}
如果不知道什么是扩展方法,以及不知道扩展方法如何使用,可以看我的另外一篇文章,
http://blog.csdn.net/only_yu_yy/article/details/78509091
然后在视图中调用这个方法
<div>
@Html.ShowPageNavigate((int)ViewData["pageIndex"], (int)ViewData["pageSize"], (int)ViewData["totalCount"])
</div>
最后一步,在控制器中加入如下代码:
DataModelContainer dbContainer = new DataModelContainer();
// GET: User
public ActionResult Index(int pageIndex = 1,int pageSize=2)
{
ViewData["pageIndex"] = pageIndex;
ViewData["pageSize"] = pageSize;
ViewData["totalCount"] = dbContainer.User.Count();
ViewData.Model = dbContainer.User.OrderBy(u=>u.Id).Skip(pageSize*(pageIndex-1)).Take(pageSize).AsEnumerable();
return View();
}
这就可以轻松实现分页效果了。
最新文章
- 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(三)
- C#综合揭秘——通过修改注册表建立Windows自定义协议
- linux 无交互添加用户设置密码
- System.Security.SecurityException The source was not found, but some or all event logs could not be searched.Inaccessible logs Security.
- Hibernate单向多对一对象关系模型映射
- iphone 使用 soap 服务 介绍
- vi, vim 基本使用(1)
- Activity使用Serializable传递对象实例
- Git操作指南(2) —— Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并(转)
- JAVA数组的定义及用法
- C语言--位运算符
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
- android 卸载程序、清除数据、停止服务用法
- sql点滴41—MyISAM 和 InnoDB 讲解
- CPU 硬盘性能
- c# &;sqlserver
- Linux 总是提示You have new mail in /var/spool/mail/root
- Nginx概述及安装配置
- F5负载均衡原理(转载)
- Spring IOC(五)依赖注入
热门文章
- fiddler2请求参数乱码
- GitHub入门之路(1)
- 关于WebAPI
- ";_OBJC_CLASS_$_MAMapServices";, referenced from: 的问题修复
- 观察者模式—jdk自带源码分析
- Swift iOS 日期操作:NSDate、NSDateFormatter
- 解决`向github提交代码是老要输入用户名密码`
- os模块中关于文件/目录常用的函数使用方法
- yml 文件操作方法
- C#中await和async关键字的简单理解