在.NET Web API中进行分页

时间:2015-06-19 06:17:25

标签: c# .net asp.net-web-api odata paging

我必须为使用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(即我不想使用上面的设置)并从我的解决方案的web.config获取页面大小而不修改web api提供的URL,即没有客户端大小寻呼。

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

我想知道我想要做什么,或者我想做一些太棘手的事情。

1 个答案:

答案 0 :(得分:2)

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