ASP.NET AJAX: используем закладки и браузерную кнопку 'Назад' - Краткий обзор возможности хранения истории в ASP.NET AJAX

ОГЛАВЛЕНИЕ

 

Краткий обзор возможности хранения истории в ASP.NET AJAX

Как уже было отмеченововведении, возможность хранения истории в ASP.NET AJAX Framework становится реальной в ASP.NET версии 3.5, SP 1. Изначально, это было частью Microsoft ASP.NET Futures, хотя на тот момент данная функциональность была реализована при помощи элемента управления History. В ASP.NET 3.5 SP1, данная функциональность была передана элементу ScriptManager.

Свойство хранения истории позволяет разработчику страницы создавать "состояния" в жизненном цикле страницы, использующей AJAX. Данное "состояние" создается путем добавления точки истории. Как только они определены, данные "состояния" можно достичь, используя кнопку Back в браузере; более того, они могут быть добавлены в закладки. Если вы используете GMail в качестве вашего почтового сервера, то вы уже наверняка сталкивались с AJAX-приложением, которое использует данные "состояния" истории. Когда вы читаете письмо в GMail, данное сообщение загружается асинхронно при помощи JavaScript-вызовов обратно на Google сервера. Строка запроса браузера также будет обновлена, и будет включать в себя ID сообщения. Если вы нажмете кнопку Back, вы вернетесь на страницу входящих писем GMail (а не на страницу, которую вы посетили до того, как зайти на GMail). В то же время вы можете добавить страницу в закладки в то время, как вы читаете почтовое сообщение. Если вы решите посетить ее позже, то интерфейс GMail автоматически загрузит то самое сообщение.

Возможность использования истории в ASP.NET AJAX работает следующим образом:

  • Вы, разработчик страницы, решаете, какие действия будут вызывать добавление точек истории. Данные действия могут быть действиями клиентской стороны (нажатие на HTML элемент), либо действиями серверной стороны, вызванными частичным постбэком. Набор действий, которые должны создавать точку истории, зависят от веб-страницы и ее пользовательского интерфейса. В конце данной статьи приводится Приложение, доступное для загрузки и включающее в себя две страницы, которые отображают сортируемый и листаемый GridView. На одной странице каждое сортировочное действие вызывает вставку точки истории; на другой - и сортировка, и листинг вызывают вставку точки истории.
  • Когда запускается действие вам необходимо добавить точку истории, если это именно то действие, которое должно вызывать вставку точки истории. Это выполнимо путем создания какой-то строки, которая моделирует данное состояние, а также регистрации данного состояния истории при помощи элемента управления ScriptManager. Вы также можете обновить заголовок (Title) страницы, основываясь на состоянии, тем самым область заголовка браузера и информация об истории включают в себя подходящее описание каждого состояния.
  • Наконец, вам нужно создать обработчик для события Navigate в ScriptManager. Данное событие вызывается в том случае, если  пользователь достигнет страницы, путем нажатия кнопок Back (Назад) или Forward (Вперед), либо посещает страницу, используя закладку. Обработчик события Navigate отвечает за восстановление состояния истории.

Вкратце: возможность хранения истории позволяет вам сохранять текущее состояние приложения в ответ на определенные действия пользователя и тем самым внедряет информацию о текущей странице в историю браузера, кодируя состояние, которое вы указываете в строке запроса. Позже, если пользователь возвратится к данному "состоянию" нажатием кнопки Back или Forward, либо используя закладку, вам необходимо восстановить данное состояние.

Остальная часть данной статьи рассматривает способ сохранения точки истории в момент, когда сортируется GridView, а также способ восстановления того состояния при необходимости. Начнем!