public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl) { var pagingBuilder = new PagingHtmlBuilder(); var result = new StringBuilder(); // previous link string prevLink = (pagingInfo.CurrentPage == 1) ? pagingBuilder.BuildHtmlItem(pageUrl(pagingInfo.CurrentPage - 1), "Prev", false, true) : pagingBuilder.BuildHtmlItem(pageUrl(pagingInfo.CurrentPage - 1), "Prev"); result.Append(prevLink); // only show up to 5 links to the left of the current page var start = (pagingInfo.CurrentPage <= 6) ? 1 : (pagingInfo.CurrentPage - 5); // only show up to 5 links to the right of the current page var end = (pagingInfo.CurrentPage > (pagingInfo.TotalPages - 5)) ? pagingInfo.TotalPages : pagingInfo.CurrentPage + 5; for (int i = start; i <= end; i++) { string pageHtml = (i == pagingInfo.CurrentPage) ? pagingBuilder.BuildHtmlItem(pageUrl(i), i.ToString(), true) : pagingBuilder.BuildHtmlItem(pageUrl(i), i.ToString()); result.Append(pageHtml); } // next link string nextLink = (pagingInfo.CurrentPage == pagingInfo.TotalPages) ? pagingBuilder.BuildHtmlItem(pageUrl(pagingInfo.CurrentPage + 1), "Next", false, true) : pagingBuilder.BuildHtmlItem(pageUrl(pagingInfo.CurrentPage + 1), "Next"); result.Append(nextLink); return MvcHtmlString.Create(result.ToString()); }
public PlacesListViewModel() { PagingInfo = new PagingInfo(); }