P35 翻页(下) 开始写代码 下面我们就来改下Repository controller 测试 重新测试 结束


P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
在框架里面我们怎么实现呢?通常会实现一个自定义的类,这个类是一个泛型类。。这个类通常会包含一些属性。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

首先建立泛型类
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
PagedList加上泛型<T> 继承List,PagedList本身就是一个集合,只不过我们在这个集合的基础之上加了一些分页信息。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
当前页和总页数。他们的属性是private 防止在类外面设置。否则他们的值就会被设置成不合理的值。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
是否有前一页和后一页
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

只要是currentPage,也就是当前页大于1,他就有前一页。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
是否包含下一页
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
需要一个构造函数,把这些相关的参数都传进来。
数据的总数Item,数据总数count,当前页pageNumebr。然后每页显示的数据条数据pageSize。
totalPages需要算一下:如果是5除以2.等于2.5那么就显示3页。所以这里使用Math.Ceiling。最后再把double转换成int类型。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
最终的是我们要把items添加到List里面,这里使用AddRange就可以了。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
我们不支持使用这个构造函数,我们建立一个静态方法
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
改成异步
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
这里我们实际上可以把查询表达式queryExpression直接作为参数传入createAsync方法
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

下面我们就来改下Repository

先来修改接口。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
实现类。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
方法具体返回的修改。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束


P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

controller

首先要做的就是生成前一页和后一页的链接。生成这个链接就需要用到URLHelper,它里面有个link方法。link方法就可以生成URI。但是link方法需要知道这个Action的name,所以这里我们需要先给action加上name
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

建立一个private的方法。ResourceUriType是一个枚举类型。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
下面建立这个枚举。在Helpers文件夹下建。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束


P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
因为是前一页,所以这里要减1
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
必须带上查询过滤条件,否则下一页的数据就不对了。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
后一页
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
默认当前页
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
如果有前一页就生成
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

下一页
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
所有的元数据先弄出来一个对象吧。new一个匿名类
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束


P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

测试

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
headers里面数据。
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
试一下这个链接
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
这里有个错误把&,不安全的字符转义了
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
这里转换的时候加上第二个参数
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
里面配置一个属性
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束


P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

重新测试


P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束

复制出来,查询第二页
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
前一页和上一页的数据也都出来了
P35 翻页(下)
开始写代码
下面我们就来改下Repository
controller
测试
重新测试
结束
 

结束