Как заставить кнопку назад и состояние сеанса работать вместе? - PullRequest
1 голос
/ 16 декабря 2011

Может быть простой ответ на это, и я просто не вижу его, потому что я слишком близко к проекту - пусть будет так.

У меня есть приложение для поиска asp.net 2.0. Это серия страниц, которые начинаются с формы поиска и заканчиваются результатами, отображаемыми пользователю. Между страницей поиска и результатов находится страница фильтра, которая отображает серию фильтров, к которым пользователь может отфильтровать результаты поиска. Я выполняю начальный поиск на странице поиска и сохраняю результаты в сеансе. Если первоначальные результаты поиска превышают определенное число (скажем, 50 для примера), пользователь попадает на страницу фильтров. Там им представлен ряд фильтров, которые они могут применить к результатам.

После того, как выбранные фильтры были применены к результатам поиска, если счет еще больше 50, они остаются на странице, и только те фильтры, которые они не выбрали, все еще отображаются на странице. Если количество меньше 50, они переносятся на страницу результатов. Теперь, если они находятся на странице фильтров, но хотят видеть результаты, есть кнопка, которая отображает текущее состояние результатов и переводит пользователя на страницу результатов.

Вот моя проблема - если я нахожусь на странице результатов после применения некоторых фильтров и нажимаю кнопку «Назад» (ни один из кешей страниц), как я могу получить предыдущее состояние результатов поиска ДО того, какие фильтры я выбрал, были применены? Более того, если я попал на страницу результатов после серии, скажем, 4 «применить фильтры» (применить фильтр - более 50, применить другой фильтр - более 50, применить еще один фильтр - более 50 и, наконец, применить другой фильтр - да! до 50 лет перейти на страницу результатов), как получить каждую версию постоянно уменьшающихся результатов поиска из сеанса, если я продолжаю нажимать кнопку "Назад"?

Извините, если это немного странно и не так легко понять - это одна из проблем, которая не настолько проста, чтобы просто заключить ее в несколько простых предложений.

Я больше всего стремлюсь к любым мыслям (касающимся рассматриваемого вопроса) или вопросам.

ОБНОВЛЕНИЕ - К вашему сведению, я не определился с многостраничным дизайном. Требование заявило, что оно следует за существующим сторонним поисковым приложением (реверс-инжиниринг прекрасен, верно?).

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Используйте текущие параметры сеанса как есть, но пусть любой параметр строки запроса переопределяет их.Таким образом, вы сохраняете свои значения без назначения их каждому URL, но при этом настраиваетесь на любой предыдущий ручной ввод данных (строки запросов в истории браузера).

(И не используйте POST для поиска.)

0 голосов
/ 16 декабря 2011

Не для того, чтобы быть слишком критичным, но то, что вы описали, звучит как серьезный извращенный способ обработки поиска.

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

Взгляните на NewEgg.com и попробуйте их "расширенный поиск" из эта страница .Вы заметите, что слева есть около 20 различных критериев.Когда вы добавляете новые критерии, хлебная крошка вверху страницы меняется.У них есть маленькая (x) рядом с каждым в хлебной крошке, поэтому вы можете быстро исключить любые критерии из результатов поиска.Вуаля, кнопка возврата не нужна.

Обратите внимание, что ни в коем случае вам не нужно состояние сеанса для обработки этого.Самое большее, вы могли бы использовать скрытые поля формы, которые по-прежнему поддерживали бы использование кнопки «Назад» в браузере, если бы они действительно этого хотели.

...