asp.net core下一个简单的分页技术
在做web应用的时候免不了要对数据进行分页,我最近在做asp.net core的开发的时候就遇到了这个需求,现在简单的记录一下:
- public class PaginatedList<T>:List<T>
- {
- /// <summary>
- /// 当前页
- /// </summary>
- public int PageIndex { get; set; }
- //总页面数
- public int TotalPages { get; set; }
- public PaginatedList(List<T> items, int count, int pageIndex, int pageSize)
- {
- PageIndex = pageIndex;
- TotalPages = (int)Math.Ceiling(count / (decimal)pageSize);
- this.AddRange(items);
- }
- /// <summary>
- /// 判断是否有上一页
- /// </summary>
- public bool HasPreViousPage => (PageIndex > );
- /// <summary>
- /// 判断是否有下一页
- /// </summary>
- public bool HasNextPage => PageIndex < TotalPages;
- /// <summary>
- /// 创建分页
- /// </summary>
- /// <param name="source">实体信息</param>
- /// <param name="pageIndex">当前页</param>
- /// <param name="pageSize">当前页数据条数</param>
- /// <returns></returns>
- public static async Task<PaginatedList<T>> CreatepagingAsync(IQueryable<T> source,int pageIndex,int pageSize)
- {
- //返回实体总条数
- var count = await source.CountAsync();
- var items = await source.Skip((pageIndex - ) * pageSize).Take(pageSize).ToListAsync();
- var dtos=new PaginatedList<T>(items,count,pageIndex,pageSize);
- return dtos;
- }
- }
主要的知识点:
①这个类表示一个分页,将与分页有关的内容集成到单个类中,符合单一职责原则
②PageIndex记录当前页,TotalPages记录总的页数,在构造函数执行的时候,会传入必要的参数来初始化这些字段,构造函数的方法签名为(List<T> items, int count, int pageIndex, int pageSize)不难看出,传入的pageindex参数来初始化当前页,这个pageindex参数肯定是由页面来传入的,pageSize是自定义的一个数据,你想让一个页面显示多少条记录,就定义成多少。还有一个List<T>类型的item,由这个传入的参数来确定item的总条数(item.Count()),然后由了总的条数和每页的条数就可以得出总的页数。
③在CreatepagingAsync这个方法中会返回一个构造好的分页类。具体看代码注释
asp.net core下一个简单的分页技术的更多相关文章
- 给 asp.net core 写一个简单的健康检查
给 asp.net core 写一个简单的健康检查 Intro 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供 ...
- asp.net core 实现一个简单的仓储
一直有自己写个框架的想法,但是一直没有行动起来,最近比较闲,正好可以开工了. 现在已经完成了两部分.1.一个简单仓储,实现使用的是ef 2.IOC部分,这里是把内置的ioc替换成了aotofac,这部 ...
- Serilog 是 ASP.NET Core 的一个插件,可以简化日志记录
[翻译] ASP.NET Core 利用 Docker.ElasticSearch.Kibana 来记录日志 原文: Logging with ElasticSearch, Kibana, ASP.N ...
- ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...
- ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建 ...
- ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 迁移数据 上一章节中我们配置了 ...
- ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 配置 上一章节我们简单介绍了下 Id ...
- ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 验证特性 上一章节我们简单介绍了 ...
- ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 框架 前面我们使用了 N 多个章节, ...
随机推荐
- U盘插入电脑3.0的口没有反应了,2.0的口就可以
如果驱动没有问题的话,很有可能是优盘硬件故障. 尝试解决办法: 1.使劲插(就是用力一插到底).... 2.插入三分之一,不过速度只能达到2.0的速度.
- own address as source address
1222.762730] br0: received packet on nbif0 with own address as source address[ 1222.769697] br0: rec ...
- router-link 自定义点击事件
<li v-for="(item, index) in menuList"> <router-link class="classify" ta ...
- Hadoop伪分布式模式安装
一.Hadoop介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上:而且 ...
- 机器学习算法总结(五)——聚类算法(K-means,密度聚类,层次聚类)
本文介绍无监督学习算法,无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类,常见的无监督学习就是聚类算法. 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善 ...
- 2-jsp简介
一.什么是jsp:1.只能运行在服务器中2.可以将java代码嵌入html页面中的技术 补充:在eclipse中修改jsp的创建模板 window--preference--web--jsp file ...
- ESP8266 mDNS
https://circuits4you.com/2017/12/31/esp8266-mdns/ 本教程介绍如何使用ESP8266进行多播DNS?在网络世界中,很难记住每个网站和计算机的IP地址,解 ...
- javascript之传输加密
为什么要使用javascript加密呢?服务端加密远远不够,客户端或者浏览器端也需要加密,以此保证传输信息过程的安全. 今天就我工作中说说这么几种加密算法及其对应的应用场景,如下所示: base64 ...
- 线程interrupt和wait
public class InterruptDemo { public static void main(String[] args) throws InterruptedException{ Thr ...
- OPPO Developers Conference(2018.12.26)
时间:2018.12.26地点:北京国家会议中心