public static IHtmlContent PagedSortedTablePagingControl(this IHtmlHelper htmlHelper, IPagedSortedViewModel model) { const string disabled = "class=\"disabled\""; var pageNumber = model.GetCurrentPageNumber(); var pageCount = model.GetPageCount(); var previousPageStart = model.Start - model.Length; previousPageStart = previousPageStart < 0 ? 0 : previousPageStart; var previousDisabled = pageNumber <= 1 ? disabled : string.Empty; var nextPageStart = model.Start + model.Length; var nextDisabled = pageNumber >= pageCount ? disabled : string.Empty; var sb = new StringBuilder(); sb.AppendLine("<ul class=\"pagedsortedtablepagingcontrol pagination\">"); sb.AppendLine($" <li {previousDisabled}><a href=\"{GetPageLink(previousPageStart, model)}\">«</a></li>"); sb.AppendLine($" <li class=\"active\"><a href=\"#\">{pageNumber}</a></li>"); sb.AppendLine($" <li {nextPageStart}><a href=\"{GetPageLink(nextPageStart, model)}\">»</a></li>"); sb.AppendLine("</ul>"); return(new HtmlString(sb.ToString())); }
public static IHtmlContent PagedSortedTableHeaderLink(this IHtmlHelper htmlHelper, string text, string columnName, IPagedSortedViewModel model, string cssClasses = "") { bool isSortColumn = columnName.Equals(model.OrderColumn); bool newOrderAscending = !isSortColumn ? true : !model.OrderAscending; string sortIcon = isSortColumn ? model.OrderAscending ? "fa-sort-asc" : "fa-sort-desc" : string.Empty; string href = $"?start={model.Start}&length={model.Length}&orderColumn={columnName}&orderAscending={newOrderAscending}"; return(new HtmlString($"<a href=\"{href}\" class=\"pagedsortedtableheader {cssClasses}\">{text} <i class=\"fa fa-fw {sortIcon}\"></a>")); }
private static string GetPageLink(int start, IPagedSortedViewModel model) { return($"?start={start}&length={model.Length}&orderColumn={model.OrderColumn}&orderAscending={model.OrderAscending}"); }