public MvcHtmlString Pager(QueryModel pagingDto, int allCount, string containerName) { String toFirst; String toLast; var currentPage = pagingDto.Skip / pagingDto.Take; var lastPage = allCount / pagingDto.Take; if (currentPage > 0) { var toFirstLink = new AjaxHelper(_html.ViewContext, _html.ViewDataContainer) .ActionLink("<<", (string)_html.ViewContext.RouteData.Values["action"], (string)_html.ViewContext.RouteData.Values["controller"], pagingDto.Alter(skip: 0), new AjaxOptions { HttpMethod = "GET", UpdateTargetId = containerName, InsertionMode = InsertionMode.Replace, OnSuccess = "lopor.reloadGrid()" }); var toPrevious = new AjaxHelper(_html.ViewContext, _html.ViewDataContainer) .ActionLink("<", (string)_html.ViewContext.RouteData.Values["action"], (string)_html.ViewContext.RouteData.Values["controller"], pagingDto.Alter(skip: pagingDto.Skip - pagingDto.Take), new AjaxOptions { HttpMethod = "GET", UpdateTargetId = containerName, InsertionMode = InsertionMode.Replace, OnSuccess = "lopor.reloadGrid()" }); toFirst = String.Format("<li>{0}</li><li>{1}</li>", toFirstLink.ToHtmlString(), toPrevious.ToHtmlString()); } else { toFirst = String.Empty; } if (currentPage < lastPage) { var toLastLink = new AjaxHelper(_html.ViewContext, _html.ViewDataContainer).ActionLink(">>", (string)_html.ViewContext.RouteData.Values["action"], (string)_html.ViewContext.RouteData.Values["controller"], pagingDto.Alter(skip: (allCount / pagingDto.Take) * pagingDto.Take), new AjaxOptions { HttpMethod = "GET", UpdateTargetId = containerName, InsertionMode = InsertionMode.Replace, OnSuccess = "lopor.reloadGrid()" }); var toNext = new AjaxHelper(_html.ViewContext, _html.ViewDataContainer).ActionLink(">", (string)_html.ViewContext.RouteData.Values["action"], (string)_html.ViewContext.RouteData.Values["controller"], pagingDto.Alter(skip: (pagingDto.Skip + pagingDto.Take)), new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = containerName, InsertionMode = InsertionMode.Replace, OnSuccess = "lopor.reloadGrid()" }); toLast = String.Format("<li>{0}</li><li>{1}</li>", toNext.ToHtmlString(), toLastLink.ToHtmlString()); } else { toLast = String.Empty; } var sb = new StringBuilder(); const string format = "<li class=\"{0}\">{1}</li>"; for (int i = currentPage - 5; i < currentPage + 5; i++) { if (i < 0) continue; if (i > lastPage) break; var @class = currentPage == i ? "active" : String.Empty; var pageLink = new AjaxHelper(_html.ViewContext, _html.ViewDataContainer).ActionLink(String.Format("{0}", i + 1), (string)_html.ViewContext.RouteData.Values["action"], (string)_html.ViewContext.RouteData.Values["controller"], pagingDto.Alter(skip: i * pagingDto.Take), new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = containerName, OnSuccess = "lopor.reloadGrid()" }); sb.AppendFormat(format, @class, pageLink.ToHtmlString()); } return new MvcHtmlString(PagerMain(toFirst, sb.ToString(), toLast)); }