public static MvcHtmlString GetPager <T>(this System.Web.Mvc.HtmlHelper html, Paging.PagedResult <T> pagedResult, string url)
        {
            if (pagedResult == null || pagedResult.TotalNumberOfItems <= pagedResult.Paging.PageSize)
            {
                return(MvcHtmlString.Create(string.Empty));
            }

            var ulBuilder = new TagBuilder("ul");

            ulBuilder.AddCssClass("pagination");

            var pagingIndexes = GetPagingIndexes(
                pagedResult.Paging.PageIndex,
                (int)Math.Ceiling((double)pagedResult.TotalNumberOfItems / pagedResult.Paging.PageSize));

            for (int i = 0; i < pagingIndexes.Length; i++)
            {
                if (i > 0 && pagingIndexes[i - 1] != pagingIndexes[i] - 1)
                {
                    var extraLiBuilder = new TagBuilder("li");
                    extraLiBuilder.InnerHtml = "<span>&hellip;</span>";
                    extraLiBuilder.AddCssClass("disabled");
                    ulBuilder.InnerHtml += extraLiBuilder.ToString();
                }

                var liBuilder = new TagBuilder("li");
                if (pagedResult.Paging.PageIndex == pagingIndexes[i])
                {
                    liBuilder.InnerHtml = "<span>" + (pagingIndexes[i] + 1).ToString() + "</span>";
                    liBuilder.AddCssClass("active");
                }
                else
                {
                    var pagingLinkBuilder = new TagBuilder("a");

                    string extendedUrl = url
                                         .SetParameter("sortColumn", pagedResult.Paging.SortColumn)
                                         .SetParameter("sortDirection", pagedResult.Paging.SortDirection.ToString())
                                         .SetParameter("pageIndex", pagingIndexes[i].ToString());

                    pagingLinkBuilder.MergeAttribute("href", extendedUrl);
                    pagingLinkBuilder.AddCssClass("paging");
                    pagingLinkBuilder.SetInnerText((pagingIndexes[i] + 1).ToString());

                    liBuilder.InnerHtml = pagingLinkBuilder.ToString();
                }

                ulBuilder.InnerHtml += liBuilder.ToString();
            }

            return(MvcHtmlString.Create(ulBuilder.ToString()));
        }
        public static MvcHtmlString GetSortingUrl <T>(this System.Web.Mvc.HtmlHelper html, Paging.PagedResult <T> pagedResult, string propertyName, string url)
        {
            string extendedUrl = url
                                 .SetParameter("sortColumn", propertyName)
                                 .SetParameter("sortDirection", GetSortDirection(pagedResult.Paging, propertyName).ToString())
                                 .SetParameter("pageIndex", "0");

            return(MvcHtmlString.Create(extendedUrl));
        }