/// <summary> /// Helper to generate a specific paging element with the given parameters /// </summary> /// <param name="url">url</param> /// <param name="pageNumber">page number</param> /// <param name="totalNumberOfElements">total number of elements</param> /// <returns>a filled paging element</returns> private IEnumerable <PageElement> GeneratePagingElements(Uri url, int pageNumber, int totalNumberOfElements) { // Prepare the limits for the Paging elements int numberOfPagingElements = NumberOfPagingElements; int startIndex = pageNumber - numberOfPagingElements > 1 ? pageNumber - numberOfPagingElements : 1; int endIndex = pageNumber + numberOfPagingElements <= ((totalNumberOfElements / ElementsPerPage) + 1) ? pageNumber + numberOfPagingElements : (totalNumberOfElements / ElementsPerPage) + 1; // Use the limits for building the Paging for (int index = startIndex; index <= endIndex; index++) { string newUrl = url.AppendParameter(Labels.PagingKey, index.ToString()); yield return(new PageElement() { Text = index.ToString(), Url = newUrl, IsActive = pageNumber == index }); } }