Пример #1
0
        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();
 }