Что самый стандартный или лучший способ состоит в том, чтобы сохранить данные между запросами?
Я должен использовать cookie или переменные сеанса? Я интересуюсь хранением данных как порядок сортировки, столбец вида и номер страницы (для paginiation).
Я происхожу из среды веб-форм поэтому обычно, этот тип вещи был автоматически обработан для меня в состоянии отображения средств управления, которые я использовал.
обновление
Мне нравится querystring идея для поиска и большего количества значимых URL; однако, я работаю над представлением "индекса/списка", которое состоит из Представления с заголовком и опций "управления", как DDLs для фильтрации и частичного представления, которое представляет таблицу данных.
DDLs используют a $.load()
назвать ActionResult на контроллере, который возвращает частичное представление, передающие параметры туда в querystring, но так как это ajax, запрашивает, чтобы основной URL страницы браузера пользователя не становился обновленным.
Существует ли лучшая практика для взятия querystrings от URL основной страницы, и использование их в ajax запрашивает к другому ActionResults?
Если вы хотите, чтобы он выжил только через один запрос / перенаправление, TempData - ваш друг.
Тем не менее, для таких вещей, как разбивка на страницы, URL - лучший метод, позволяющий обмениваться ссылками в одиночку.
Стандартный способ - передавать подобные вещи через параметры запроса URL. Вы можете изменить свою маршрутизацию, чтобы ожидать определенные переменные URL. Таким образом, страницы становятся более удобными для поисковых систем.
В ответ на ваше обновление, хорошим способом добиться этого для страниц было бы наличие ссылок на «Предыдущая» и «Следующая» "страницы результатов (или еще лучше, список всех страниц в списке), выводимые на страницу, с номерами страниц, которые вы затем скрываете с помощью JavaScript.
Таким образом, пользователи увидят ваше приятное AJAXy-поведение, а поисковые системы (и пользователи без JavaScript - мобильные устройства или пользователи, использующие старые программы чтения с экрана, например) по-прежнему смогут получить доступ ко всем вашим страницам - это поможет вам страницы для постепенного ухудшения качества или используйте «прогрессивное улучшение».
Вещи, которые ранее находились в состоянии просмотра, вероятно, должны быть возвращены в руки клиента через скрытые поля или куки.
Сессия "слишком" проста. В среде разработчиков она работает отлично, практически независимо от того, что вы в нее вкладываете. В производстве масштабируемость и сохранение становятся проблемой. Внутрипроцессная сессия может неожиданно исчезнуть, если на вашем сайте произойдет ошибка, и требует привязки к серверу при балансировке нагрузки. Сессия вне процесса устраняет проблемы долговечности и аффинити, но все еще может быть "бутылочным горлышком" производительности, если в сессию помещается слишком много всего. ОЧЕНЬ распространенной проблемой является то, что каждая страница помещает 1-2 элемента в сессию, но никогда не вынимает их после завершения работы. И даже если страница удаляет данные сеанса, когда они больше не нужны, данные могут остаться бесхозными, если пользователь начинает процесс и не завершает его.
Cookies - это быстрый и простой способ сохранения данных между запросами, и вы также можете сделать их действующими только в течение ограниченного времени в зависимости от ваших потребностей.
Это зависит от того, насколько постоянной вы хотите, чтобы информация была:
Лично я бы очень внимательно подумал о порядке сортировки и столбцах в URL-адресе, если вы это сделаете, вы действительно можете запутать поисковые системы:
Их можно уменьшить за счет использования файла Robots.txt, запрещающего доступ к отсортированным версиям страницы, но если это генерируется почти динамически, это будет очень сложно поддерживать в дальнейшем.