看了下XPAGE感觉还是用的不太爽,自己写了个,不处理数据,只根据参数生成分页的html代码,样式是bootstrap的,需要的小伙伴拿走吧。

public static IHtmlContent Pager(this IHtmlHelper html, long totalCount, int pageSize, string pageStr)
{
if (totalCount < ) return new HtmlString(string.Empty); var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize); //总页数 var dicRoute = html.ViewContext.RouteData.Values;
var strQuery = html.ViewContext.HttpContext.Request.Query;
int pageIndex;
if (dicRoute.ContainsKey(pageStr))
{
if (!int.TryParse(dicRoute[pageStr].ToString(), out pageIndex)) pageIndex = ;
}
else
{
if (!int.TryParse(strQuery[pageStr].ToString(), out pageIndex)) pageIndex = ;
} if (pageIndex < ) pageIndex = ;
if (pageIndex > totalPages) pageIndex = totalPages; foreach (var key in dicRoute.Keys)
{
if (string.IsNullOrEmpty(key) || !strQuery.ContainsKey(key)) continue;
if (!strQuery.TryGetValue(key, out var values)) continue;
if (values.Count == && !string.IsNullOrEmpty(values))
{
dicRoute[key] = strQuery[key];
}
} var sbOut = new StringBuilder();
sbOut.Append("<nav aria-label=\"Page navigation\">");
sbOut.Append("<ul class=\"pagination\">");
if (totalPages > )
{
sbOut.Append("<li");
sbOut.Append(pageIndex == ? " class=\"disabled\">" : ">");
dicRoute[pageStr] = ;
sbOut.Append(pageIndex == ? "<a>首页</a>" : GetString(html.RouteLink("首页", dicRoute)));
sbOut.Append("</li>"); var pre = pageIndex - ;
if (pre < ) pre = ;
sbOut.Append("<li");
sbOut.Append(pageIndex == ? " class=\"disabled\">" : ">");
dicRoute[pageStr] = pre;
sbOut.Append(pageIndex == ? "<a>上一页</a>" : GetString(html.RouteLink("上一页", dicRoute)));
sbOut.Append("</li>"); var nex = pageIndex + ;
if (nex > totalPages) nex = totalPages;
sbOut.Append("<li");
sbOut.Append(pageIndex == totalPages ? " class=\"disabled\">" : ">");
dicRoute[pageStr] = nex;
sbOut.Append(pageIndex == totalPages ? "<a>下一页</a>" : GetString(html.RouteLink("下一页", dicRoute)));
sbOut.Append("</li>"); sbOut.Append("<li");
sbOut.Append(pageIndex == totalPages ? " class=\"disabled\">" : ">");
dicRoute[pageStr] = totalPages;
sbOut.Append(pageIndex == totalPages ? "<a>尾页</a>" : GetString(html.RouteLink("尾页", dicRoute)));
sbOut.Append("</li>");
} sbOut.AppendFormat("<li><a>共{0}条数据</a></li>", totalCount); sbOut.Append("</ul>");
sbOut.Append("</nav>"); return new HtmlString(sbOut.ToString()); }

说明下,totalCount是总条数,pageSize是每页条数,pageStr是页参数的 key 如:http://123.com/?page=4   pageStr就是 page

使用如下

@Html.Pager(, , "page")

以上代码中的 GetString 方法请阅读第一篇文章

网络释义
totalcount: 总记录
TotalCount Integer: 伸缩规则总数
TotalCount String: 列表条条目数
pager  ['peɪdʒə]  pager&type=1详细X
基本翻译
n. 寻呼机,呼机
n. (Pager)人名;(德)帕格
网络释义
pager: 传呼机
Cowhide Pager: 牛皮纸
numeric pager: 数字寻呼机

core mvc 分页的更多相关文章

  1. 再谈使用X.PagedList.Mvc 分页(ASP.NET Core 2.1)

    在以前的博文中写过使用X.PagedList.Mvc组件来对ASP.NET MVC应用程序进行分页,可以参考此篇随笔:Asp.net MVC 使用PagedList(新的已更名 为X.PagedLis ...

  2. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-1

    来个目录吧: 第一章 第二章 第三章 暂时就这么多.后面路线更新吧 本系列文章为翻译加上我个人的使用心得理解,希望帮助热爱学习的程序员. 珍重声明:本系列文章会跟原文有点出入,去掉了罗里吧嗦的文字. ...

  3. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-4

    来个目录吧: 第一章-入门 第二章- Entity Framework Core Nuget包管理 第三章-创建.修改.删除.查询 第四章-排序.过滤.分页.分组 第五章-迁移,EF Core 的co ...

  4. ASP.NET Core MVC中构建Web API

    在ASP.NET CORE MVC中,Web API是其中一个功能子集,可以直接使用MVC的特性及路由等功能. 在成功构建 ASP.NET CORE MVC项目之后,选中解决方案,先填加一个API的文 ...

  5. 使用 ASP.NET Core MVC 创建 Web API(一)

    从今天开始来学习如何在 ASP.NET Core 中构建 Web API 以及每项功能的最佳适用场景.关于此次示例的数据库创建请参考<学习ASP.NET Core Razor 编程系列一> ...

  6. 在Asp.Net Core MVC 开发过程中遇到的问题

    1. Q: Razor视图中怎么添加全局模型验证消息 #### A:使用ModelOnly <div asp-validation-summary="ModelOnly" c ...

  7. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  8. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

    再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下, ...

  9. .Net Core MVC 网站开发(Ninesky) 2.2、栏目管理功能-System区域添加

    在asp或asp.net中为了方便网站的结构清晰,通常把具有类似功能的页面放到一个文件夹中,用户管理功能都放在Admin文件夹下,用户功能都放在Member文件夹下,在MVC中,通常使用区域(Area ...

随机推荐

  1. Ruby: Print WIN32OLE method names in Ruby

    class WIN32OLE   def list_ole_methods     method_names = ole_methods.collect {|m| m.name}     puts m ...

  2. Crontab Build_setting的定期检查

    一.脚本功能 (1)检查所有的builting_setting.h是否能够编译通过,并将编译结果写入 编译结果.h文件中. (2)将编译结果通过邮箱发送给相关负责人. (3)系统定期执行任务,检查bu ...

  3. Python之路,Day13 - 堡垒机

    项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒 ...

  4. 任务13:在Core Mvc中使用Options

    13 新建Controllers文件夹,在里面添加HomeController控制器 新建Views文件夹,再新建Home文件夹.再新建Index.cshtml的视图页面 注释上节课的代码,否则我们的 ...

  5. E20180430-hm

    pants n. <英>(紧身的)短裤; <美> 裤子; 喘气( pant的名词复数 ); leggings n. 绑腿; 裹腿; 绷腿; 袜统; redundant adj. ...

  6. 793. Preimage Size of Factorial Zeroes Function

    Let f(x) be the number of zeroes at the end of x!. (Recall that x! = 1 * 2 * 3 * ... * x, and by con ...

  7. poj1979【基础bfs/dfs】

    挑战习题搜索-1 题意: 给定起点,然后求一个可以到达的数量,位置"."都可以走.每次应该是上下左右都可以走. 思路: 这题应该DFS更好写,但是BFS也可以写吧. 好久没写了- ...

  8. python __builtins__ filter类 (24)

    24.'filter', 用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表.该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True ...

  9. IT兄弟连 Java Web教程 经典面试题

    1.什么是B/S结构?什么是C/S结构? B/S是Browser/Server的缩写客户机上只要安装—个浏览器(Browser)加Netscape Navigator或Internet Explore ...

  10. hadoop wordcount程序缺陷

    在wordcount 程序的main函数中,没有读取运行环境中的各种参数的值,全靠hadoop系统的默认参数跑起来,这样做是有风险的,最突出的就是OOM错误. 自己在刚刚学习hadoop编程时,就是模 ...