在.NET Web API中使用分页查询属性

问题描述 投票:0回答:1

我正在尝试为 sql 数据库中的表值函数构建 OData 端点。我必须启用分页,以便从 web.config 文件中获取页面大小值。

我想我必须扩展 EnableQuery 属性才能执行此操作,例如:

public class EnablePagedQueryAttribute : EnableQueryAttribute
{
    public EnablePagedQueryAttribute()
    {
        int myPageSizeFromWebConfig = 0;

        // Get value from web.config as you want:
        if (int.TryParse(ConfigurationManager.AppSettings["myPageSize"], out myPageSizeFromWebConfig))
        {
            this.PageSize = myPageSizeFromWebConfig;
        }
    }
}

我在控制器中使用了上面的类,而不是 EnableQuery,而是在控制器方法中使用了 EnablePagedQuery 但查询根本不起作用:$top,$select,没有一个起作用,

我猜这个 EnablePagedQuery 扩展有问题,因为使用 EnableQuery 一切都正常。

另外,我如何检查页面大小是否确实发生了变化

c# .net asp.net-web-api pagination odata
1个回答
0
投票

$select 查询将不起作用,因为当您在控制器中使用 ODataQueryOptions 的方法(以选择查询中的选项)时,您不能使用 select,因为 它不支持 select。因此,您一定不要尝试在查询中编写 $select。

此外,要检查页面大小是否已更改,一个简单的选择是将其设置为较小的值(例如 1,2),然后检查您的查询响应是否确实发生了变化。

© www.soinside.com 2019 - 2024. All rights reserved.