2016-08-23 3 views
1

У нас было приложение silverlight, которое поддерживало состояние при нажатии на ссылки и возвращалось к нему.ASP.NET MVC - поддержание состояния веб-страницы

Мне было интересно, есть ли способ реализовать что-то подобное с помощью Asp.net MVC? В основном прямо сейчас пользователь переходит на страницу поиска, используя ссылку в баннере, на странице поиска мы показываем некоторые элементы. Пользователь нажимает на одну из них, а другая страница открывает его на главной странице, в которой перечислены данные о товарах. Оттуда пользователь может снова нажать на поиск, но на этот раз, конечно, открывается новое окно поиска.

Интересно, есть ли способ загрузить существующий контент из уже открытого окна в новое окно поиска?

Если какая-либо разница, страница поиска включена ajax.

+2

Ht tp является апатридом. Таким образом, вам нужно использовать что-то вроде Session или базы данных для сохранения данных между несколькими HTTP-запросами. – Shyju

ответ

3

Как указал Шуй, Http является без гражданства. Существует несколько способов хранения и обмена данными между несколькими страницами в веб-приложениях. Просто назвать несколько, вы можете использовать:

  • Cookies (не сохранять конфиденциальные данные по безопасности, такие как пароли в печеньем)
  • Sessions
  • локальное хранилище
  • Браузера (http://www.w3schools.com/html/html5_webstorage.asp)
  • В MVC , вы можете использовать ViewBag, ViewData или TempData
  • вы можете передать данные в качестве параметров запроса в URL
2

Вы не хотите поддерживать состояние в ASP.Net MVC. Это плохая практика.

Если вы хотите передать состояние между методами действия, вы можете использовать TempData.

Он использует состояние сеанса под капотом и автоматически очищает его сразу после получения данных.

ASP.Net предлагает дополнительные методы добавления в дополнение к TempData. Вы можете прочитать больше here. В вашем сценарии TempData - лучший выбор.

+0

Итак, используя TempData, я смогу сохранить все состояние этой страницы поиска, включая результаты конкретного результата поиска? – User123

+0

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

Смежные вопросы