public override IEnumerable <IPageLinkModel> LinkPages(IPageRequestModel request, IPageResultsModel results) { if (null == request) { throw new ArgumentNullException("request"); } if (null == results) { throw new ArgumentNullException("results"); } var list = new List <IPageLinkModel>(); if (results.TotalPageCount > 1) { var requestedPage = request.RequestedPage; var totalPageCount = results.TotalPageCount; var factory = new LinkFactory(request, IsBase1); list.Add(factory.CreateLink(0)); if (requestedPage > 1) { var test = requestedPage == totalPageCount - 1 && totalPageCount > 3; list.Add(factory.CreateRange(1, test ? requestedPage - 3 : requestedPage - 2)); if (test) { list.Add(factory.CreateLink(requestedPage - 2)); } list.Add(factory.CreateLink(requestedPage - 1)); } if (requestedPage != 0 && requestedPage != totalPageCount - 1) { list.Add(factory.CreateLink(requestedPage)); } if (requestedPage < totalPageCount - 2) { var test = requestedPage == 0 && totalPageCount > 3; list.Add(factory.CreateLink(requestedPage + 1)); if (test) { list.Add(factory.CreateLink(requestedPage + 2)); } list.Add(factory.CreateRange(test ? requestedPage + 3 : requestedPage + 2, totalPageCount - 2)); } list.Add(factory.CreateLink(totalPageCount - 1)); } return(list); }
public override IEnumerable<IPageLinkModel> LinkPages(IPageRequestModel request, IPageResultsModel results) { if (null == request) throw new ArgumentNullException("request"); if (null == results) throw new ArgumentNullException("results"); var list = new List<IPageLinkModel>(); if (results.TotalPageCount > 1) { var requestedPage = request.RequestedPage; var totalPageCount = results.TotalPageCount; var factory = new LinkFactory(request, IsBase1); list.Add(factory.CreateLink(0)); if (requestedPage > 1) { var test = requestedPage == totalPageCount - 1 && totalPageCount > 3; list.Add(factory.CreateRange(1, test ? requestedPage - 3 : requestedPage - 2)); if (test) { list.Add(factory.CreateLink(requestedPage - 2)); } list.Add(factory.CreateLink(requestedPage - 1)); } if (requestedPage != 0 && requestedPage != totalPageCount - 1) { list.Add(factory.CreateLink(requestedPage)); } if (requestedPage < totalPageCount - 2) { var test = requestedPage == 0 && totalPageCount > 3; list.Add(factory.CreateLink(requestedPage + 1)); if (test) { list.Add(factory.CreateLink(requestedPage + 2)); } list.Add(factory.CreateRange(test ? requestedPage + 3 : requestedPage + 2, totalPageCount - 2)); } list.Add(factory.CreateLink(totalPageCount - 1)); } return list; }