2012-01-24 3 views
1

В настоящее время я восстанавливаю состояние путем повторного запроса базы данных для заполнения сетки, но страница загружается слишком медленно. Вместо этого я хотел бы сохранить viewstate в переменных сеанса и восстановить его, когда пользователь повторно посещает страницу. Как это делается? Должен ли я использовать SessionPageStatePersister? Это не проблема обратной передачи или даже перекрестная обратная передача.Как сохранить и восстановить состояние просмотра страницы сеанса в сценарии postbackback без обратной передачи?

Фон: Я использовал шаблон веб-приложения ASP.NET VS 2010 с главной страницей и несколькими страницами с вкладками. При переходе на новую вкладку состояние теряется. Вкладка «Мои клиенты» позволяет пользователю фильтровать и выбирать одного клиента из AspxGridView. Выбранный идентификатор клиента хранится в переменной сеанса и используется для отображения связанных данных клиента на других вкладках: «Контакты», «Счета-фактуры», «Задачи» и т. Д. Я могу сохранить и восстановить фильтр, сортировку и компоновку сетки клиента с помощью SaveClientLayout. Но я не знаю, как восстановить данные сетки без повторного запроса базы данных.

Я нашел this tutorial и внедрил код в разделе SessionPageStatePersister. Я скопировал код и создал SessionPageStateAdapter и файл .browser. Я смущен тем, как получить доступ к данным сеанса viewstate. Мне нужна помощь с как сохранить viewstate и восстановить его после того, как пользователь посетил несколько других страниц?

+0

Как медленно ваша нагрузка? Есть ли лучшее решение для ускорения/страницы вашего запроса на сетку клиента? Сколько записей вы возвращаете? – Paddy

+0

К сожалению, данные хранятся в плоских файлах Vax, доступных через драйвер Connex ODBC. Я буду искать оптимизацию, но Vax и Connx - это области, с которыми я не слишком хорошо знаком. Оптимизация может быть не такой простой, как с SQL Server, где я мог бы добавить индекс, если это необходимо. – DeveloperDan

ответ

0

Viewstate - это клиентский способ управления состоянием сеанса.

Он вводит код внутри html-страницы.

Поэтому, когда пользователь закрывает состояние браузера, он не сохраняется.

Если вы хотите сохранить состояние через браузер сессии у вас есть два пути:

  • продолжают хранить в базе данных.
    Если у вас есть проблемы с производительностью, подумайте об использовании кеша ASP.NET

  • Сохраните информацию в файле cookie.

+0

Я не пытаюсь восстановить состояние после закрытия браузера или сеансов браузера. В тот же сеанс я хочу восстановить viewstate после того, как другие страницы были посещены. Проблема, как я вижу, заключается в том, что viewstate обычно используется только для обратной передачи. Я пытаюсь сделать что-то, что невозможно? – DeveloperDan

+0

Я вижу. Возможно, взгляните на [Сохранение состояния просмотра на сервере] (http://msdn.microsoft.com/en-us/magazine/cc188774.aspx#S6). –

+0

Но я считаю, что лучший способ справиться с вашим сценарием «В настоящее время я восстанавливаю состояние путем повторного запроса базы данных, чтобы заполнить сетку, но страница загружается слишком медленно. Вместо этого я хочу сохранить viewstate в переменных сеанса и восстановить его как пользователь повторно посещает страницу "использует db + кеш или файлы cookie. –

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