Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WebApi进行OData分页($inlinecount)_C#_Asp.net_Pagination_Odata_Asp.net Web Api - Fatal编程技术网

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

C# 使用WebApi进行OData分页($inlinecount),c#,asp.net,pagination,odata,asp.net-web-api,C#,Asp.net,Pagination,Odata,Asp.net Web Api,我使用OData对web api调用返回的一长串项进行分页。我可以通过带有开始和结束索引的url过滤数据 我的问题是,我如何知道项目的总数?因此,我可以在调用web api的移动设备上显示第1页,共3页(20项)。您可以在查询中使用$inlinecount=allpages,以获取结果中所有实体的计数,而无需顶部和跳过。例如: 返回单个产品,但也返回内联计数9(因为实体集中有9个产品)。尝试以下方法: 它使用最新的Web API OData包 在最终确定的Web API OData包发布之前(

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


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

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

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

尝试以下方法:

它使用最新的Web API OData包


在最终确定的Web API OData包发布之前(今年秋天的某个时候,应该在11月左右),当$INLINECUNT得到开箱即用的支持时,这个解决方案可能是最好的选择。

我上周就有了确切的问题

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

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

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


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

谢谢,但找到了以下链接,因为该链接表示不支持开箱即用->尝试使用Microsoft.AspNet.WebApi.OData版本0.1.0-alpha-120815返回400-{“消息”:不支持查询参数“$inlinecount”。}$inlinecount已被弃用。请参阅我的回答:您忘记了参数“skip”上的“$”符号。请注意,当用户阅读页面时,项目总数可能会更改。例如,如果“在您的列表中有一个SO问题的答案,那么在用户到达列表末尾之前,该数字可能已经从20增长到30。这使得总页数有些不确定。