Search code examples
aspnetboilerplate

How to use and display PagedResultDto


Using ASPNet Boilerplate, and returning a pagedResultSetDto with the below code, how do I display the page links?

 public PagedResultDto<ArticleDto> GetAll()
    {
        var articleCount = articleRepository.Count();

        var t = articleRepository.GetAllIncluding(x => x.articleImage).Include(x => x.Category).Where(
                x => x.PublishFrom <= DateTime.Now &&
                x.PublishTo >= DateTime.Now &&
                 x.Status == PostStatus.Published &&
                 x.IsDeleted == false
                ).OrderByDescending(x=> x.PublishFrom).ToList();

        return new PagedResultDto<ArticleDto>
        {
            TotalCount = articleCount,
            Items = t.MapTo<List<ArticleDto>>()
        };
    }

Solution

  • First, take in IPagedResultRequest as input:

    // using Abp.Linq.Extensions;
    
    public PagedResultDto<ArticleDto> GetAll(PagedResultRequestDto input)
    {
        var articleCount = articleRepository.Count();
    
        var t = articleRepository
                .GetAllIncluding(x => x.articleImage)
                .Include(x => x.Category)
                .Where(x =>
                    x.PublishFrom <= DateTime.Now &&
                    x.PublishTo >= DateTime.Now &&
                    x.Status == PostStatus.Published &&
                    x.IsDeleted == false
                )
                .OrderByDescending(x => x.PublishFrom)
                .PageBy(input) // Page by SkipCount and MaxResultCount
                .ToList();
    
        return new PagedResultDto<ArticleDto>
        {
            TotalCount = articleCount,
            Items = t.MapTo<List<ArticleDto>>()
        };
    }
    

    Then create your own links to pass in SkipCount, e.g. GetAll?SkipCount=10 for page 2.

    MaxResultCount has a default value of 10.