Pagination WCF数据服务分页行为

Pagination WCF数据服务分页行为,pagination,odata,wcf-data-services,Pagination,Odata,Wcf Data Services,在我的示例项目中,我将实体页面大小设置为20。然后我有一个实体集,其结果计数可以被页面大小整除。例如,包含100个项目的类别集。当我去: http://localhost/Sample.svc/Categories?$skiptoken=80 我得到了第81到100个分类,页面上有“下一个”链接 我试图转到那个页面,但它没有返回任何内容。 对此有何解释?分页只会获取下一页大小的项目。如果它发现少于这个,那么很明显没有更多的项目返回,所以你不会得到下一个链接。如果查询返回请求的项数,则运行时不

在我的示例项目中,我将实体页面大小设置为20。然后我有一个实体集,其结果计数可以被页面大小整除。例如,包含100个项目的类别集。当我去:

 http://localhost/Sample.svc/Categories?$skiptoken=80
我得到了第81到100个分类,页面上有“下一个”链接

我试图转到那个页面,但它没有返回任何内容。
对此有何解释?

分页只会获取下一页大小的项目。如果它发现少于这个,那么很明显没有更多的项目返回,所以你不会得到下一个链接。如果查询返回请求的项数,则运行时不会试图确定这是否是最后一页,它只返回下一个链接。这样的链接可能不会返回任何结果。 事实上,下一个链接不一定会返回任何结果,但只要响应包含另一个下一个链接,就可能有更多的结果。标准内置分页将返回预定义大小的页面(最后一个页面除外),但服务可以自由使用任何其他类型的分页,这些分页可能会为每个页面返回不同大小的页面(包括空页面)

要直接回答您的问题“为什么最后一页是空的?”: 运行时不会“向前看”,因此它无法判断给定页面是否是最后一个页面,除非它得到的结果少于预期数量。展望未来不仅代价高昂(要求超出必要范围),而且可能是错误的(如果额外的结果导致错误怎么办…)

 http://localhost/Sample.svc/Categories?$skiptoken=100