OData pagination with WebApi ( $inlinecount )

本文关键字:inlinecount WebApi pagination with OData | 更新日期: 2023-09-27 18:35:10

我正在使用 OData 对从 Web api 调用返回的一长串项目进行分页。我可以通过带有开始和结束索引的 url 过滤数据。

我的问题是,我怎么知道项目总数?因此,我可以在调用 Web API 的移动设备上显示第 1 页(共 3 页)(20 个项目)。

OData pagination with WebApi ( $inlinecount )

试试这种方法: http://www.strathweb.com/2012/08/supporting-odata-inlinecount-with-the-new-web-api-odata-preview-package/

它使用最新的 Web API OData 包。

在最终的 Web API OData 包发布之前(今年秋天的某个时候,应该在 11 月左右),当$inlinecount得到现成的支持时,此解决方案可能是最好的选择。

可以在

查询中使用$inlinecount=allpages来获取结果中所有实体的计数,而无需顶部和跳过。例如:

http://services.odata.org/OData/OData.svc/Products?$top=1&skip=1&$inlinecount=allpages

返回

单个产品,但也返回内联计数 9(因为实体集中有 9 个产品)。

上周我遇到了确切的问题。查看使用有用的元数据扩展 ASP.NET Web API 响应

我使用这篇文章和示例代码使用 OData 启动并运行分页网格。如示例中所述,我创建了一个委派处理程序来捕获 HttpResponseMessage 并将其包装在包含项计数的自定义元数据中。还会创建一个自定义属性 CustomQueryableAttribute,该属性继承了默认的 QueryableAttribute。

这里听起来可能有点复杂,但实际上实现起来非常简单。我在大约 30 分钟内启动并运行了一些东西。

希望未来版本的 Web API 具有更完整的 OData 支持。

编辑:Odata支持将不会随Web API一起提供。正在删除 RTM 版本的可查询属性。更完整的 OData 支持将在初始发布后的某个时间通过单独的 Nuget 包提供。