Страница отображает все, что есть в базе данных - PullRequest
0 голосов
/ 10 ноября 2019

Поле PageSize указывает, что информация должна отображаться на одной странице, около восьми объектов, но на странице отображается все, что находится в базе данных.

        private readonly IObjectRepository _objectRepository;
        private readonly IWebHostEnvironment hostingEnvironment;
        public int PageSize = 8;

        public HomeController(IObjectRepository objectRepository, IWebHostEnvironment hostingEnvironment)
        {
            _objectRepository = objectRepository;
            this.hostingEnvironment = hostingEnvironment;
        }

        public ViewResult Index(int objectPage)
        {
            var model = _objectRepository.GetAllObjects();
            model.OrderBy(o => o.Id)
                 .Skip((objectPage - 1) * PageSize)
                 .Take(PageSize);
            return View(model);
        }

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Спасибо всем! Я нашел другое решение с Methanit, спасибо ему большое.

1 - Изменен мой PageViewModel

public class PageViewModel
    {
        public int PageNumber { get; set; }
        public int TotalPages { get; set; }


    public PageViewModel(int count, int pageNumber, int pageSize)
    {
        PageNumber = pageNumber;
        TotalPages = (int)Math.Ceiling(count / (double)pageSize);
    }

    public bool HasPreviousPage
    {
        get
        {
            return (PageNumber > 1);
        }
    }

    public bool HasNextPage
    {
        get
        {
            return (PageNumber < TotalPages);
        }
    }
}

2 - Изменен метод Index в контроллере:

public IActionResult Index(int page = 1)
        {
            int pageSize = 6;
            var model = _objectRepository.GetAllObjects();
            var count = model.Count();
            var items = model.Skip((page - 1) * pageSize).Take(pageSize).ToList();
            PageViewModel pageViewModel = new PageViewModel(count, page, pageSize);
            IndexViewModel viewModel = new IndexViewModel
            {
                PageViewModel = pageViewModel,
                Objects = items
            };
            return View(viewModel);
        }

3- Приложение работает правильно. Спасибо всем большое!

0 голосов
/ 11 ноября 2019

Пропустить и Взять в результате вернуть новый IEnumerable вместо изменения существующего на месте. Таким образом, вы должны заменить эту строку:

model.OrderBy(o => o.Id)
             .Skip((objectPage - 1) * PageSize)
             .Take(PageSize);

на:

model=model.OrderBy(o => o.Id)
             .Skip((objectPage - 1) * PageSize)
             .Take(PageSize);

Таким образом, вы назначаете новое значение запроса для baseQuery, а затем, когда вы его перечислите, оно вернетсяожидаемые лица.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...