diff --git a/Lombiq.HelpfulLibraries.OrchardCore/Data/QueryExtensions.cs b/Lombiq.HelpfulLibraries.OrchardCore/Data/QueryExtensions.cs index 12878117..4bbb5b7e 100644 --- a/Lombiq.HelpfulLibraries.OrchardCore/Data/QueryExtensions.cs +++ b/Lombiq.HelpfulLibraries.OrchardCore/Data/QueryExtensions.cs @@ -160,25 +160,35 @@ public static async Task> GetPageAndPagerAsync( /// Pager shape that can be used to navigate to other pages. /// /// Used to source some required services and current request information. + /// + /// If not , it's used to configure the . Otherwise the query + /// value of pagenum is used from . + /// /// /// An optional value it you want custom page size instead of the value coming from . /// public static Task> GetPageAndPagerAsync( this IQuery query, HttpContext httpContext, + int? pageNumber = null, int? defaultPageSize = null) where T : class { + var page = pageNumber ?? 0; + if (page <= 0) + { + page = httpContext.Request.Query.TryGetValue("pagenum", out var pageNumberString) && + int.TryParse(pageNumberString, CultureInfo.InvariantCulture, out var pageNumberInt) + ? pageNumberInt + : 1; + } + var provider = httpContext.RequestServices; - var pageNumber = httpContext.Request.Query.TryGetValue("pagenum", out var pageNumberString) && - int.TryParse(pageNumberString, CultureInfo.InvariantCulture, out var pageNumberInt) - ? pageNumberInt - : 1; return query.GetPageAndPagerAsync( provider.GetRequiredService(), provider.GetRequiredService(), - new PagerParameters { Page = pageNumber > 0 ? pageNumber : 1 }, + new PagerParameters { Page = page > 0 ? page : 1 }, httpContext.Request.RouteValues, defaultPageSize); }