繁体   English   中英

使用 WebApi ( $inlinecount ) 进行 OData 分页

[英]OData pagination with WebApi ( $inlinecount )

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

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

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

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

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

试试这个方法: 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 开箱即用时,这个解决方案可能是最好的选择。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM