P35 翻页(下)







在框架里面我们怎么实现呢?通常会实现一个自定义的类,这个类是一个泛型类。。这个类通常会包含一些属性。

开始写代码

首先建立泛型类

PagedList加上泛型<T> 继承List,PagedList本身就是一个集合,只不过我们在这个集合的基础之上加了一些分页信息。

当前页和总页数。他们的属性是private 防止在类外面设置。否则他们的值就会被设置成不合理的值。



是否有前一页和后一页


只要是currentPage,也就是当前页大于1,他就有前一页。

是否包含下一页

需要一个构造函数,把这些相关的参数都传进来。
数据的总数Item,数据总数count,当前页pageNumebr。然后每页显示的数据条数据pageSize。
totalPages需要算一下:如果是5除以2.等于2.5那么就显示3页。所以这里使用Math.Ceiling。最后再把double转换成int类型。

最终的是我们要把items添加到List里面,这里使用AddRange就可以了。

我们不支持使用这个构造函数,我们建立一个静态方法

改成异步

这里我们实际上可以把查询表达式queryExpression直接作为参数传入createAsync方法

下面我们就来改下Repository

先来修改接口。

实现类。

方法具体返回的修改。



controller

首先要做的就是生成前一页和后一页的链接。生成这个链接就需要用到URLHelper,它里面有个link方法。link方法就可以生成URI。但是link方法需要知道这个Action的name,所以这里我们需要先给action加上name


建立一个private的方法。ResourceUriType是一个枚举类型。


下面建立这个枚举。在Helpers文件夹下建。




因为是前一页,所以这里要减1



必须带上查询过滤条件,否则下一页的数据就不对了。

后一页

默认当前页

如果有前一页就生成




下一页

所有的元数据先弄出来一个对象吧。new一个匿名类





测试




headers里面数据。

试一下这个链接

这里有个错误把&,不安全的字符转义了

这里转换的时候加上第二个参数

里面配置一个属性



重新测试




复制出来,查询第二页

前一页和上一页的数据也都出来了

 

结束


posted @ 2020-12-13 20:20  高山-景行  阅读(171)  评论(1编辑  收藏  举报