PagedList с использованием LINQ Skip and Take, но показ пейджинга с использованием количества результатов

Я пытаюсь отобразить отфильтрованный список продуктов, основанный на фильтре категорий и ItemsPerPage, но яУ меня возникли некоторые проблемы при попытке использовать его с PagedList.

Кто-то с опытом PagedList может посоветовать мне, если мне нужно написать свой собственный код нумерации страниц или есть способ получить нужные мне результаты, используя PagedList.

Я использую LINQ 's Пропустить и Возьмите функции, чтобы получить только количество строк, которые должны отображаться на текущей странице, но я бы все же хотел, чтобы ссылки на страницы отображали страницы на основе фильтра.с общее количество.

Например.: мой поисковый фильтр находит 50 результатов, но так как мои строки на странице, скажем, 10 элементов, я использую LINQ 's Пропустить () & Возьмите (), чтобы вернуть только 10 строк. Мне все еще нужно показать в моем View.cshtml ссылку на страницу << 1 | 2 | 3 | 4 | 5 >> Прямо сейчас с PagedList по умолчанию я получаю только << 1 >>Я знаю, почему я вижу только одну страницу, но я просто хотел узнать, как заставить ее работать, чтобы отображать правильное количество ссылок на страницы, получая при этом только часть результатов.

** Моя цель - записывать оптимизированные запросы в базу данных, чтобы производительность ответов на веб-страницах была высокой.

Вот как выглядит мой код для метода действия. Код получает правильные результаты, но разбиение на страницы не работает так, как мне нужно:

public ViewResult List(int page =1, string category =null)
{
    if (category != null) this.CurrentCategory = category;

    var products = repository.Products
                    .Where(p => this.CurrentCategory == null || p.Category == this.CurrentCategory)
                    .OrderBy(p => p.ProductID)
                    .Skip((page -1) * PageSize)
                    .Take(PageSize);

    return View(products.ToList().ToPagedList(page, PageSize));
}

Вот фрагмент кода из View, который имеет дело с нумерацией страниц. Я заглянул в проектСайт Github, но не смог найти метод расширения для предоставления пользовательских страниц. Я думаю, что он будет отображать только количество страниц на основепункты на странице' и Count () продуктов в @Model:

@model IPagedList

//foreach loop that renders the @Model

//Code that displays the pagination using PagedList

    @Html.PagedListPager(Model, page => Url.Action("List", new { page = page, category =  ViewBag.CurrentCategory }), PagedListRenderOptions.OnlyShowFivePagesAtATime
    )

Ответы на вопрос(5)

Ваш ответ на вопрос