.NET Web API 中的分页

本文关键字:分页 API Web NET | 更新日期: 2023-09-27 17:57:15

我必须为使用实体框架构建的 odata 端点进行分页。我知道我可以使用

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

但是我不得不不使用 ApplyTo(即我不想使用上述设置)并从我的解决方案的 web.config 中获取页面大小,而无需修改 Web API 提供的 URL,即没有客户端大小分页。

所以,到目前为止,我还没有找到一种方法来做到这一点。我无法将页面大小放入 [ 启用查询 ],因为这不会从 web.config 动态提升页面大小参数。

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

.NET Web API 中的分页

您可以扩展 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;
        }
    }
}