Стандартный способ сохранения данных между запросами в ASP.NET-MVC - PullRequest
5 голосов
/ 18 марта 2010

Какой самый стандартный или лучший способ сохранить данные между запросами?

Должен ли я использовать файлы cookie или переменные сеанса? Я заинтересован в сохранении таких данных, как порядок сортировки, столбец сортировки и номер страницы (для разбивки на страницы).

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

обновление

Мне нравится идея строки запроса для поиска и более значимых URL; однако я работаю над представлением «индекс / список», которое состоит из представления с заголовком и параметров «управления», таких как DDL для фильтрации, и частичного представления, которое отображает таблицу данных.

DDL используют $.load() для вызова ActionResult на контроллере, который возвращает частичное представление, передавая параметры туда в строке запроса, но, поскольку это запросы ajax, URL главной страницы браузера пользователя не обновляется.

Существуют ли передовые практики для удаления строк запросов из URL главной страницы и их использования в запросах ajax для других ActionResults?

Ответы [ 7 ]

6 голосов
/ 18 марта 2010

Если вы хотите, чтобы он выжил только через один запрос / перенаправление, TempData - ваш друг.

Однако для таких вещей, как ваша нумерация страниц, наилучшим способом является URL-адрес, позволяющий обмениваться ссылками самостоятельно.

3 голосов
/ 18 марта 2010

Стандартный способ - передавать подобные вещи через параметры URL-запроса. Вы можете изменить свою маршрутизацию, ожидая определенных переменных URL. Таким образом, страницы становятся более дружественными для поисковых систем.

1 голос
/ 18 марта 2010

В ответ на ваше обновление хорошим способом добиться этого для страниц было бы наличие ссылок на «Предыдущие» и «Следующие» страницы результатов (или еще лучше, список всех страниц в список), вывод на страницу с номерами страниц, которые затем скрываются с помощью JavaScript.

Таким образом, пользователи должны видеть ваше хорошее поведение AJAXy, а поисковые системы (и пользователи без JavaScript - мобильные или те, кто использует старые программы чтения с экрана, например) по-прежнему смогут получить доступ ко всем вашим страницам - это поможет страниц, чтобы изящно ухудшить качество, или использовать «Прогрессивное улучшение».

0 голосов
/ 18 марта 2010

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

0 голосов
/ 18 марта 2010

Вещи, которые ранее находились в viewstate, вероятно, должны быть возвращены в руки клиентов через скрытые поля или файлы cookie.

Сессия "слишком" проста. В среде разработчиков он работает отлично, практически независимо от того, что вы в него положили. В производстве масштабируемость и постоянство становятся проблемой. Сеанс внутри процесса может неожиданно исчезнуть, если у вас есть ошибка сбоя на вашем сайте, и требует балансировки сервера при балансировке нагрузки. Внеочередной сеанс устраняет проблемы с долговечностью и сродством, но все же может стать проблемой производительности, если в сеанс помещается слишком много материала. ОЧЕНЬ распространенная проблема заключается в том, что каждая страница помещает 1 или 2 элемента в сеанс, но никогда не удаляет их снова, когда они сделаны. И даже если страница удаляет данные сеанса, когда она больше не нужна, данные все равно могут стать осиротевшими, если пользователь запускает процесс и никогда не завершает его.

0 голосов
/ 18 марта 2010

Это зависит от того, насколько постоянной вы хотите, чтобы информация была:

  • Такие вещи, как номер страницы, действительно должны быть в URL (как указывали другие) - это помогает с закладками и т. Д.,но помните, что если вы добавите больше содержимого в список, то этот набор результатов не будет всегда соответствовать желаемому пользователю ...
  • Если вы счастливы, что эти значения будут потеряны по истечении времени сеанса(по умолчанию около 20 минут), затем поместите их в сеанс.
  • Если вы считаете, что время ожидания сеанса истекает до следующего запроса, или вы хотите сохранить его при посещениях, то вы должны хранить их в любом из них.куки-файлы или профиль (потенциально допускающие «анонимные» профили, которые работают с куки-файлами пользователей, поэтому они могут потерять их на разных компьютерах).

Лично я бы очень тщательно продумал порядок сортировкии столбцы в URL, если вы это сделаете, вы можете на самом деле запутать поисковые системы:

  1. Много страниц с очень сисодержание milar (страница 1, отсортировано по дате desc, страница 1, отсортировано по дате asc и т. д.) - поисковым системам не нравится дублированный контент, и вы, как Google, например, не будете показывать только две страницы с вашего сайта внабор результатов по умолчанию, вы хотите, чтобы они были действительными, а не дублировались.
  2. Поисковые системы будут тратить намного больше времени на сканирование вашего сайта и, возможно, откажутся - если на каждой странице они найдут ссылки на «Сортировать по этому столбцу»они будут пытаться следовать за ними, что приведет к увеличению объема работы на сервере, более высокой пропускной способности и т. д.

Это можно уменьшить с помощью файла Robots.txt, запрещающего доступ к отсортированным версиямстраницы, но если это генерируется почти динамически, это будет очень сложно поддерживать в дальнейшем.

0 голосов
/ 18 марта 2010

Сеансы самые простые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...