PagedList с использованием LINQ Skip and Take, но показ пейджинга с использованием количества результатов
Я пытаюсь отобразить отфильтрованный список продуктов, основанный на фильтре категорий и ItemsPerPage, но у меня возникают некоторые проблемы при попытке использовать его с PagedList.
Кто-то с опытом PagedList может посоветовать мне, если мне нужно написать свой собственный код нумерации страниц или есть способ получить нужные мне результаты, используя PagedList.
Я использую функции LINQ Skip & Take, чтобы получить только количество строк, которые должны отображаться на текущей странице, но я все же хотел бы, чтобы ссылки на страницы отображали страницы на основе общего количества фильтров.
Например.: мой поисковый фильтр находит 50 результатов, но так как мои строки на странице, скажем, 10 элементов, я использую функцию LINQ Skip () & Take (), чтобы получить только 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, но не смог найти метод расширения для предоставления пользовательских страниц. Я думаю, что будет отображаться только количество страниц на основе «элементов на страницу» и количества () продуктов в @Model:
@model IPagedList<Product>
//foreach loop that renders the @Model
//Code that displays the pagination using PagedList
<div style="text-align:center">
@Html.PagedListPager(Model, page => Url.Action("List", new { page = page, category = ViewBag.CurrentCategory }), PagedListRenderOptions.OnlyShowFivePagesAtATime
)
</div>