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

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

我的问题是,我怎么知道物品的总数? 所以我可以在我的移动设备上显示第1页(共3项)(20项),该设备调用web api。

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

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,它inheritance了默认的QueryableAttribute。

这听起来有点复杂但实际上很容易实现。 我在大约30分钟内完成了一些任务。

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

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