Поддержание пользовательского контроля состояния публичной собственности через обратные передачи - PullRequest
0 голосов
/ 28 марта 2012

У меня есть пользовательский элемент управления, который отображает информацию о клиенте только на каждой странице .aspx в моем приложении. Этот пользовательский элемент управления содержит общедоступные свойства для информации о клиенте, которые устанавливаются со страницы .aspx (скажем, page1.aspx) OnLoad, и отображает информацию в этом пользовательском элементе управления. Теперь с этого page1.aspx перенаправляет на страницу page2.aspx, но не может отобразить информацию в пользовательском контроле page2.aspx (значения теряются после обратной передачи). Я мог бы поддерживать состояние свойств пользовательского элемента управления, используя сессию в каждом элементе управления и иметь доступ ко всем страницам, но сессии были бы дорогостоящими способами сделать это. Пожалуйста, дайте мне другое лучшее решение по этому поводу, чтобы я мог поддерживать значение свойств элементов управления пользователя для постбэков.

Заранее спасибо ...

Ответы [ 3 ]

0 голосов
/ 28 марта 2012

Еще один возможный ответ - вы можете использовать CrossPagePostback.Это позволяет Page2 автоматически обнаруживать данные, передаваемые со страницы Page1.Вы должны будете сделать это в событии загрузки страницы.

Перенаправление всегда приведет вас на другую страницу, и это будет всегда терять любое состояние, присоединенное к первой странице.Единственный способ сохранить это состояние - не использовать веб-приложение!

0 голосов
/ 25 апреля 2012

Никогда не рекомендуется хранить пользовательскую информацию в сеансе и как можно меньше в файле cookie. Ни один из них не является безопасным и, как вы можете видеть, имеет некоторый государственный багаж, который редко оправдывает его использование.

Я рекомендую вернуться к чертежной доске и разработать решение, которое хранит информацию в базе данных, очевидно, на сервере; даже если запись очищена в конце транзакции. Посмотрите эту таблицу, и вы будете удивлены, сколько сеансов отброшено и никогда не достигнет «официального» конца транзакции.

0 голосов
/ 28 марта 2012

Информация не теряется в PostBack, поскольку Page2.aspx получает отдельный запрос GET после выполнения перенаправления из Page1.aspx

Ниже приведены способы управления состоянием

.
  1. Состояние сеанса
  2. Состояние приложения
  3. Просмотр состояния
  4. печенье
  5. Строка запроса
  6. Веб-хранилище HTML

Состояние сеанса - это то, что кажется логичным выбором для вашего сценария, так как состояние приложения повлияет на данные всех пользователей, вошедших в систему. Viewstate будет потеряно, как только мы сделаем перенаправление. Для файлов cookie могут возникнуть проблемы с ограничением размера, и вам необходимо очистить данные, хранящиеся в файлах cookie. Кроме того, вы должны шифровать данные, хранящиеся там. Строки запроса легко подделать и не являются надежными. Веб-хранилище HTML доступно только в последних браузерах, и, следовательно, совместимость браузера будет проблемой.

...