/// <summary> /// Gets first two, previous & current & next, last two pages /// </summary> private List <PageItem> GetPagesWithGaps() { var pages = new List <PageItem>(); var firstPage = new PageItem(1); var secondPage = new PageItem(2); var pageBeforeLastPage = new PageItem(TotalPageCount - 1); var lastPage = new PageItem(TotalPageCount); //first two pages pages.Add(firstPage); pages.Add(secondPage); //current page segment pages.AddIfNotContains(new PageItem(PreviousPage)); pages.AddIfNotContains(new PageItem(CurrentPage)); pages.AddIfNotContains(new PageItem(NextPage)); //last two pages pages.AddIfNotContains(pageBeforeLastPage); pages.AddIfNotContains(lastPage); AddGaps(pages); return(pages); }
protected virtual async Task <string> GetPageAsync(TagHelperContext context, TagHelperOutput output, PageItem page) { var pageHtml = new StringBuilder(""); pageHtml.AppendLine("<li class=\"page-item " + (TagHelper.Model.CurrentPage == page.Index ? "active" : "") + "\">"); if (page.IsGap) { pageHtml.AppendLine("<span class=\"page-link gap\">…</span>"); } else if (!page.IsGap && TagHelper.Model.CurrentPage == page.Index) { pageHtml.AppendLine(" <span class=\"page-link\">\r\n" + " " + page.Index + "\r\n" + " <span class=\"sr-only\">(current)</span>\r\n" + " </span>"); } else { pageHtml.AppendLine(await RenderAnchorTagHelperLinkHtmlAsync(context, output, page.Index.ToString(), page.Index.ToString()).ConfigureAwait(false)); } pageHtml.AppendLine("</li>"); return(pageHtml.ToString()); }