public static IHtmlString PageLoadButton <T>(this HtmlHelper helper, PaginationList <T> paginationList, string urlPrefix = null) { var currentUrl = HttpContext.Current.Request.Url; if (string.IsNullOrEmpty(urlPrefix)) { urlPrefix = currentUrl.Scheme + "://" + currentUrl.Host + currentUrl.AbsolutePath; } var totalRecords = paginationList.TotalCount; var currentPageSize = paginationList.Count; var currentPage = paginationList.CurrentPageNumber; var firstNewItemNumber = (currentPage + 1) * currentPageSize + 1; var pageCount = 0; if (currentPageSize != 0) { pageCount = Math.Max((int)Math.Ceiling((double)totalRecords / currentPageSize), 1); } var resultString = string.Empty; var httpItemsString = string.Empty; var queryString = helper.ViewContext.HttpContext.Request.QueryString; for (var i = 0; i < queryString.Count; i++) { if (queryString.Keys[i] != "page" && queryString.Keys[i] != "ajax") { httpItemsString += "&" + queryString.Keys[i] + "=" + queryString[i]; } } httpItemsString += "&ajax=true"; if (currentPage < pageCount && pageCount != 1 && currentPage != pageCount - 1) { resultString = String.Format("<a class=\"paginator action-button\" href=\"#\" url=\"{0}?page={1}{2}#item{3}\" title=\"Подгрузка контента не работает с выключенным javascript\" style=\"opacity: 0.5\">Еще</a>", urlPrefix, currentPage + 2, httpItemsString, firstNewItemNumber); } return(helper.Raw(resultString)); }
public static IHtmlString Paginator <T>(this HtmlHelper helper, PaginationList <T> paginationList, string urlPrefix = null) { var currentUrl = HttpContext.Current.Request.Url; if (urlPrefix == null) { urlPrefix = currentUrl.Scheme + "://" + currentUrl.Host + currentUrl.AbsolutePath; } var totalRecords = paginationList.TotalCount; var currentPageSize = paginationList.Count; var currentPage = paginationList.CurrentPageNumber; var pageCount = 0; if (currentPageSize != 0) { pageCount = Math.Max((int)Math.Ceiling((double)totalRecords / currentPageSize), 1); } var resultString = new StringBuilder(); var httpItemsString = string.Empty; var queryString = helper.ViewContext.HttpContext.Request.QueryString; for (var i = 0; i < queryString.Count; i++) { if (queryString.Keys[i] != "page") { httpItemsString += "&" + queryString.Keys[i] + "=" + queryString[i]; } } if (currentPage > 0) { resultString.AppendLine(String.Format("<a href=\"{0}?page={1}{2}\">Предыдущая</a>", urlPrefix, currentPage, httpItemsString)); } if (pageCount > 1) { for (var i = 0; i < pageCount; i++) { if (i == 0) { if (i != currentPage) { resultString.AppendLine(String.Format("<a href=\"{0}?page={1}{2}\">{1}</a>", urlPrefix, i + 1, httpItemsString)); } else { resultString.AppendLine(String.Format("<a href=\"{0}?page={1}{2}\"><b>{1}</b></a>", urlPrefix, i + 1, httpItemsString)); } } else { if (i != currentPage) { resultString.AppendLine(String.Format("<a href=\"{0}?page={1}{2}\">{1}</a>", urlPrefix, i + 1, httpItemsString)); } else { resultString.AppendLine(String.Format("<a href=\"{0}?page={1}{2}\"><b>{1}</b></a>", urlPrefix, i + 1, httpItemsString)); } } } } if (currentPage + 1 < pageCount) { resultString.AppendLine(String.Format("<a href=\"{0}?page={1}{2}\">Следующая</a>", urlPrefix, currentPage + 2, httpItemsString)); } return(helper.Raw(resultString.ToString())); }