MickMS
@MickMS
человек

Постраничный вывод (пагинация) ASР.NET MVC?

Всем доброго времени суток, столкнулся с задачей постраничного вывода, все настроил, для этого дела, но столкнулся с проблемой. У меня на странице фильтруются результаты запроса, по критериям, результатов может быть 100500, и хотелось бы, чтобы они тоже выводились постранично. Но этого не происходит при переходе на следующую страницу отфильтрованных результатов происходит выборка снова всех данных(не отсортированных так сказать) .
Приложу код контроллера.
public ActionResult Index(int page = 1)
        {
            ViewListAuto model = new ViewListAuto
            {
                ListAuto = rep.GetAllShortAdvert().OrderByDescending(p => p.IdComment).Skip((page - 1) * countItemPage).Take(countItemPage),
                Pager = new Tools.Pager
                {
                    CountItemInTable = rep.GetAllShortAdvert().Count(),
                    CountItemPage = countItemPage,
                    CurrentPage = page
                }
            };
            return View(model);
        }
[HttpPost]
 public ActionResult Index(ViewListAuto model, int page = 1)
        {
            FilterAutoValue filter = new FilterAutoValue
            {
                IdBrand = model.BrandName,
                IdModel = model.ModelName,
                TypeTransmission = model.TypeTransmission,
                YearManufacture = Convert.ToInt32(model.YearManufacture)
            };
            string query = dataFilter.FiltrationAuto(filter);
             filterAutoList = db.ShortAdvert.SqlQuery(query).OrderByDescending(p => p.IdComment).Skip((page - 1) * countItemPage).Take(countItemPage).ToList();

            model.ListAuto = filterAutoList.OrderByDescending(p => p.IdComment).Skip((page - 1) * countItemPage).Take(countItemPage);
            model.Pager = new Tools.Pager
            {
                CountItemInTable = filterAutoList.Count(),
                CountItemPage = countItemPage,
                CurrentPage = page
            };
            return View(model);
        }

занимаюсь MVC вот уже месяц все вроде бы получается, но тут.. такая вот, проблема.
  • Вопрос задан
  • 4141 просмотр
Решения вопроса 1
SergeyRodyushkin
@SergeyRodyushkin
.NET Developer
Похоже, проблема в том, что метод, принимающий аргументы фильтра, работает только по POST, а пейджер реализован в виде ссылок, которые, очевидно, делают GET запрос (и вы попадаете в первый метод).
Думаю, вы могли бы сделать один GET-метод, Index(FilterAutoValue filter, int page = 1) и, если критерии поиска не заданы, просто возвращать из dataFilter.FiltrationAuto запрос, отображающий все.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@CrazyHorse
Смотрите в сторону правильности генерации ссылок, или роутинг - параметр page при переходе по ссылке приходит в Action? тут сразу должно стать все ясно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы