Поиск и подкачка страниц, но при поиске все равно отображается неверное количество страниц - PullRequest
0 голосов
/ 02 апреля 2012

Привет, я пользуюсь этим руководством здесь и следую ему. Но я использую только поиск и пейджинг.

Когда я что-то ищу, оно все равно отображает 16 страниц, но должно быть примерно 3 страницы.

Вот код контроллера:

    public ActionResult Index(int page = 1,string search = null)
    {
        IEnumerable<Produkter> produkt = db.Produkter.Where(p => search == null
            || p.Kategorie.Contains(search)
            || p.Material.Contains(search)
            || p.Namn.Contains(search)
            || p.Storlek.Contains(search)
            || p.Tillbehör.Contains(search)
            || p.Tillbehörstyp.Contains(search)
            || p.Benämning.Contains(search)
            || p.Färg.Contains(search));

        ViewBag.TotalPages = (int)Math.Ceiling((double)db.Produkter.Count() / pageSize);
        produkt = produkt.Skip((page - 1) * pageSize).Take(pageSize).ToList();

        ViewBag.CurrentPage = page;
        ViewBag.PageSize = pageSize;

        ViewBag.Search = search;
        return View(produkt);

А вот и вид:

 @model IList<Mvctest.Models.Produkter>
 @helper biuldLinks(int start, int end, string innerContent)
 {
  for (int i = start; i <= end; i++)
  {
    <a class="@(i == ViewBag.CurrentPage ? "current" : "")" href="@Url.Action("Index", "Produkter", new { Search = ViewBag.Search , page = i})">@(innerContent ?? i.ToString())</a> 
  }
 }
 @helper pageLinks()
 {
   exakly the same code on the giude
 }

<div class="product-search">
<form action="@Url.Action("Index", "Produkter")" method="get">
Search <input id="search" name="search" type="text" value="@ViewBag.Search" />
<input type="submit" value="Search" />
</form>

Page:
@pageLinks()

Пейджинг работает, а поиск работает. Проблема в том, что при поиске на странице все еще отображается общее количество страниц. Например, 16 страниц, когда указан весь продукт, но при поиске это может быть всего 3 страницы.

1 Ответ

0 голосов
/ 02 апреля 2012

при подсчете вы не учитываете отфильтрованный список

ViewBag.TotalPages = (int)Math.Ceiling((double)db.Produkter.Count() / pageSize);

попробуйте заменить на

ViewBag.TotalPages = (int)Math.Ceiling((double)produkt.Count / pageSize);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...