[英]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.