Odata webv api服务器端分页

时间:2016-10-20 15:59:09

标签: odata

我没有运气分页工作。我所看到的是Odata层正在跳过控制器返回的数据(即我想控制分页和过滤服务器端)。如果我在没有$ skip =的情况下发出请求,那么API将返回10条记录。如果我设置$ skip = 100,则返回0条记录。有什么建议?控制器方法如下:

[EnableQuery(PageSize=10)]      
public IHttpActionResult GetProducts(ODataQueryOptions<Product>  
queryOptions)
{    
List<Product> results = new List<Product>();
for (int i = 0; i < 10; i++)
{
    results.Add(new Product() { Id = Guid.NewGuid(), Name=  
    "Product"+ i.ToString() });
}
Request.ODataProperties().NextLink =  
    newUri(getNextUrl(queryOptions.Skip,10));
return Ok<IQueryable<Product>>(results.AsQueryable());
}

1 个答案:

答案 0 :(得分:0)

当服务器端设置了$ skip和pagesize时。首先应用逻辑跳过,然后返回结果的页面大小。例如:你在/ Orders API中返回100个订单,我使用$ skip = 5,然后客户端应该获得95个订单,跳过前5个订单,然后如果你设置pagesize是10,客户端应该得到5 - 15, 10个订单。所以在你的场景中,你已经完成了控制器逻辑中的分页工作,OData在你的分页后应用了skip,结果是错误的,就像我们只有10个产品,并且请求跳过10,所以结果是空的。 / p>