Пейджинг результатов поиска с asp.net MVC - PullRequest
5 голосов
/ 02 ноября 2009

У меня возникла ситуация, по которой я не смог найти решение в результате моих поисков здесь. Вот сценарий:

У меня есть форма поиска с 2 обязательными полями и несколькими дополнительными. Форма отправляет сообщение в метод действия, который определяет, какие поля выбраны, и создает список <> объектов, которые соответствуют критериям поиска. Затем я передаю этот список <> представлению для отображения.

Эта проблема, с которой я сталкиваюсь, заключается в том, как подкачка обычно выполняется с помощью asp.net mvc. Для прошлых проектов я использовал собственный помощник Html, который создает ссылки, которые включают параметры запроса, а также параметр «страницы». Затем он использует запрос GET и формат .Take (). Skip ().

Я столкнулся с этим проектом, поскольку не могу использовать запрос GET для критериев поиска и не могу найти способ сохранить список <> в памяти для выполнения обычного параметра "страницы" обмануть.

Я думал о сохранении List <> в сеансе, но объекты и список могут быть очень большими.

Я думаю, это популярная проблема с расширенными формами поиска, но я не могу найти хорошее решение. Любая помощь будет оценена. Спасибо!

Ответы [ 3 ]

4 голосов
/ 03 ноября 2009

Как насчет кэширования объекта результата поиска и присвоения ему уникального ключа. После этого ваши ссылки на пейджинговые ссылки ссылаются на этот уникальный (SearchID), и ваше действие ищет этот объект, извлекает его из кэша и оттуда пропускает / берет.

Это не будет перестраивать объект для каждого запроса, значительно ускоряя загрузку страницы и уменьшая нагрузку на вашу базу данных / приложение.

Вот статья о кешировании:

http://aspnet.4guysfromrolla.com/articles/100902-1.aspx

Вот видео о кешировании:

http://www.asp.net/learn/Videos/video-6206.aspx

Примечание. Обязательно укажите срок действия кэшированного объекта.

2 голосов
/ 03 ноября 2009

Если я правильно понимаю, вы хотите загрузить результаты поиска только один раз, а затем пролистать их.

Рассматривали ли вы какие-либо функции подкачки jQuery? Вы можете просто вывести весь список на страницу и использовать JavaScript для обработки страниц (и сортировки, если хотите).

Пример можно найти на http://beckelman.net/demos/jqueryTableSorterConPaging/default.aspx

1 голос
/ 02 ноября 2009

Поместите все в одну форму: обязательные поля, необязательные поля, ссылки на страницы.

Две возможности:

  1. Используйте кнопки отправки или изображения вместо тегов привязки для ссылок на страницы, каждая из которых имеет другое имя (например, page1, page2, ...): это позволит вам получить нужную страницу при отправке формы .
  2. Поместите скрытое поле внутри вашей формы. Затем добавьте обработчик щелчков JavaScript для любого из якорей страницы. Этот обработчик обновит значение скрытого поля со страницей, отправит форму и отменит событие.

Таким образом, нажав на любую из ссылок на пейджер, вы отправите форму со всеми данными, необходимыми для построения списка, и ссылок на пейджер.

...