/// <summary> /// Initializes a new instance of the <see cref="PagerModel"/> class. /// </summary> /// <param name="pageModel">The page model.</param> /// <param name="action">The action.</param> /// <param name="controller">The controller.</param> /// <param name="routeValues">The route values.</param> public PagerModel(IPagedModel pageModel, string action, string controller = null, object routeValues = null) { Controller = controller; _routeValues = new RouteValueDictionary(routeValues); _routeValues.Add(PageRouteConst, 0); Action = action; CurrentPage = pageModel.CurrentPage; PagesNumber = pageModel.PagesNumber; TotalCount = pageModel.Count; StartItemNumber = (pageModel.CurrentPage - 1)*pageModel.PageItems + 1; if (StartItemNumber < 0) { StartItemNumber = 0; } EndItemNumber = StartItemNumber + pageModel.PageItems - 1; if (EndItemNumber > TotalCount) { EndItemNumber = TotalCount; } if (StartItemNumber > EndItemNumber) { StartItemNumber = EndItemNumber; } }
/// <summary> /// Initializes a new instance of the <see cref="PagerModel"/> class. /// </summary> /// <param name="pageModel">The page model.</param> /// <param name="action">The action.</param> /// <param name="controller">The controller.</param> /// <param name="routeValues">The route values.</param> public PagerModel(IPagedModel pageModel, string action, string controller = null, object routeValues = null) { Controller = controller; _routeValues = new RouteValueDictionary(routeValues); _routeValues.Add(PageRouteConst, 0); Action = action; CurrentPage = pageModel.CurrentPage; PagesNumber = pageModel.PagesNumber; TotalCount = pageModel.Count; StartItemNumber = (pageModel.CurrentPage - 1) * pageModel.PageItems + 1; if (StartItemNumber < 0) { StartItemNumber = 0; } EndItemNumber = StartItemNumber + pageModel.PageItems - 1; if (EndItemNumber > TotalCount) { EndItemNumber = TotalCount; } if (StartItemNumber > EndItemNumber) { StartItemNumber = EndItemNumber; } }
/// <summary> /// El helper utiliza bootsrap para dibujarse, ocupa un div de col-7 /// </summary> /// <param name="html">Objeto helper</param> /// <param name="model">Modelo que implemente IPagedModel</param> /// <param name="actionName">Action al que debe ser redirigido</param> /// <param name="controllerName">Controller al que se debe redirigir</param> /// <returns></returns> public static IHtmlString Pager <T>(this HtmlHelper html, IPagedModel <T> model, string actionName, string controllerName) { var sb = new StringBuilder(); var urlHelper = new UrlHelper(html.ViewContext.RequestContext); sb.Append(@"<div class='col-7'><nav aria-label='Pager'><ul class='pagination'>"); if (model.CurrentPage != 1) { sb.Append( $"<li class='page-item'><a class='page-link' href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage - 1, pageSize = model.PageSize })}'>Anterior</a></li>"); } if (model.CurrentPage - 5 > 1) { sb.Append( $"<li class='page-item'><a class='page-link href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage - 5, pageSize = model.PageSize })}'>-5</a></li>"); } if (model.TotalPages > 5) { for (var i = model.CurrentPage; i <= model.CurrentPage + 5; i++) { if (model.CurrentPage == i) { sb.Append( $"<li class='page-item active'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>"); } else { sb.Append( $"<li class='page-item'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>"); } } } else { for (var i = 1; i <= model.TotalPages; i++) { if (model.CurrentPage == i) { sb.Append( $"<li class='page-item active'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>"); } else { sb.Append( $"<li class='page-item'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>"); } } } if (model.CurrentPage + 5 < model.TotalPages) { sb.Append($"<li class='page-item'><a class='page-link' href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage + 5, pageSize = model.PageSize })}'>+5</a></li>"); } if (model.CurrentPage != model.TotalPages) { sb.Append( $"<li class='page-item'><a class='page-link' href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage + 1, pageSize = model.PageSize })}'>Siguiente</a></li>"); } sb.Append( "</ul></nav></div>"); return(new MvcHtmlString(sb.ToString())); }
public static Task <List <TDestination> > ProjectToPagedListAsync <TDestination, TSource, TKey>(this IQueryable <TSource> queryable, Expression <Func <TSource, TKey> > keySelector, SortOrder sortOrder, IPagedModel request, IMapper mapper) => queryable.OrderBy(keySelector, sortOrder).ProjectToPagedListAsync <TDestination>(request, mapper);
public static Task <List <TDestination> > ProjectToPagedListAsync <TDestination>(this IQueryable queryable, IPagedModel request, IMapper mapper) => queryable.ProjectTo <TDestination>(mapper.ConfigurationProvider).DecompileAsync().ToPagedListAsync(request);
public static Task <List <T> > ToPagedListAsync <T>(this IQueryable <T> queryable, IPagedModel request) => queryable.ToPagedListAsync(request.PageNumber, request.PageSize);