protected string CreateResourceUri(string actionAlias, PagingParameters param, Enums.ResourceUriType resourceUriType) { if (param == null || string.IsNullOrEmpty(actionAlias) || UrlHelper == null) { throw new ArgumentException(); } if (resourceUriType == Enums.ResourceUriType.PreviousPage) { return(UrlHelper.Link(actionAlias, new { pageSize = param.PageSize, pageNumber = param.PageNumber - 1 })); } else if (resourceUriType == Enums.ResourceUriType.NextPage) { return(UrlHelper.Link(actionAlias, new { pageSize = param.PageSize, pageNumber = param.PageNumber + 1 })); } return(UrlHelper.Link(actionAlias, new { pageSize = param.PageSize, pageNumber = param.PageNumber })); }
/// <summary> /// Generate paging metadata for X-Pagination /// </summary> /// <typeparam name="sourceType"></typeparam> /// <param name="actionAlias"></param> /// <param name="items"></param> /// <param name="param"></param> /// <returns></returns> public PagingMetadata CreateResourceUri <sourceType>(string actionAlias, PagedList <sourceType> items, PagingParameters param) { if (items == null || param == null) { throw new ArgumentException(); } string prevPageLink = items.HasPreviousPage ? CreateResourceUri(actionAlias, param, Enums.ResourceUriType.PreviousPage) : string.Empty; string nextPageLink = items.HasNextPage ? CreateResourceUri(actionAlias, param, Enums.ResourceUriType.NextPage) : string.Empty; string currentPageLink = items.HasNextPage ? CreateResourceUri(actionAlias, param, Enums.ResourceUriType.CurrentPage) : string.Empty; return(new PagingMetadata { TotalItems = items.TotalItems, TotalPages = items.TotalPages, PageSize = items.PageSize, PageNumber = items.PageNumber, CurrentPageLink = currentPageLink, PreviousPageLink = prevPageLink, NextPageLink = nextPageLink }); }