.NET Web 中的分页 API

Paging in .NET Web API

我必须为使用 Entity Framework 构建的 odata 端点进行分页。我知道我可以使用

private ODataQuerySettings settings = new ODataQuerySettings();
settings.PageSize = myPageSize; // I keep this value in web.config of solution
and
options.ApplyTo(IQueryable, settings);

但我不能使用 ApplyTo(即我不想使用上面的设置)并在不修改 url 的情况下从我的解决方案的 web.config 中获取页面大小通过网络 api 即没有客户端大小分页。

所以,到目前为止我还没有找到一种方法来做到这一点。我无法将页面大小放入 [Enable Query],因为那不是从 web.config.

动态提升页面大小参数

我想知道是否可以完成我想要的事情,或者我是否正在尝试做一些太棘手的事情。

您可以扩展 EnableQuery 属性的默认行为以根据需要使用 web.config 的值。也许是这样的:

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;
        }
    }
}