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));

        }