Поделиться через


Перенаправление пользователей на другую страницу

Обновлен: Ноябрь 2007

В веб-приложении часто возникает необходимость перенаправления пользователей на другую страницу. ASP.NET предоставляет следующие способы встраивания перенаправления в веб-страницы:

  • С помощью гиперссылок на страницах.

  • Настройка межстраничной записи данных, позволяющей задать альтернативную целевую страницу при отправке текущей страницы.

  • Перенаправление программными средствами путем принуждения веб-обозревателя запрашивать другую страницу.

  • Перенаправление программными средствами путем переноса элемента управления на другую страницу того же веб-приложения.

Ниже описывается каждый из данных вариантов. В таблице в конце раздела обобщены варианты и представлены рекомендации для облегчения выбора в пользу того или иного варианта.

Гиперссылки

Можно воспользоваться HTML-тегом привязки (<a>) на веб-странице ASP.NET для создания статической ссылки или управлять текстом ссылки и целевым URL-адресом гиперссылки программными средствами, используя элемент управления HyperLink. В данном сценарии пользователь явно выбирает ссылку и обозреватель переходит на целевую страницу. Целевая страница вызывается командой HTTP GET. Таким образом, информация об исходной странице целевой странице не передается, если в URL-адресе целевой страницы не указана строка запроса. Если исходная и целевая страницы находятся в одном и том же веб-приложении, они могут использовать общую информацию о состоянии сеанса или состоянии приложения.

Межстраничная запись данных

По умолчанию кнопки веб-страницы ASP.NET передают страницу самой себе. Межстраничная запись данных позволяет настроить кнопку на веб-странице ASP.NET так, чтобы передача текущей страницы выполнялась на другую страницу. Типичным примером является создание многостраничных форм. Можно настроить кнопки на странице на переход к следующей и предыдущей страницам формы.

Межстраничная запись данных подобна гиперссылкам в том смысле, что перемещение инициируется действиями пользователя. Однако, при межстраничной записи данных целевая страница вызывается командой HTTP POST, которая отправляет значения элементов управления на исходной странице целевой. Кроме этого, если исходная и целевая страницы принадлежат одному веб-приложению, то целевая страница может получать доступ к открытым свойствам исходной страницы. Как всегда, все страницы в приложении могут использовать общую информацию о состоянии сеанса или приложения.

Дополнительные сведения см. в разделах Межстраничная запись данных на веб-страницах ASP.NET и Практическое руководство. Передача веб-страниц ASP.NET другой странице.

Перенаправление программными средствами с использованием обозревателя

Можно перенаправить пользователя на другую страницу, используя функции обозревателя пользователя. При перенаправлении с использованием обозревателя обозреватель посылает запрос на целевой сервер в форме запроса HTTP GET.

Можно инициировать перенаправление программными средствами в клиентском сценарии или серверном коде. В клиентском сценарии можно вызвать метод form.submit при условии, что атрибут method элемента <form> имеет значение get. В таком случае, если текущая страница содержит данные формы, они передаются на целевой сервер, добавляясь, как строка запроса, к запрошенному URL-адресу.

В серверном коде можно программными средствами выполнить перенаправление, вызвав метод Redirect. Метод отправляет обозревателю пользователя команду, которая заставляет обозреватель послать команду HTTP GET с указанием целевой страницы. Вызов серверного метода Redirect — это программный эквивалент щелчка гиперссылки, поскольку это также приводит к новому запросу целевой страницы. Поскольку вы вызываете методы из собственного кода, то можно динамически определять целевой URL-адрес, включая любую информацию строки запроса. Если исходная и целевая страницы находятся в одном и том же веб-приложении, то можно использовать общие данные для исходной и целевой страниц, добавляя серверный код для хранения сведений о состоянии сеанса.

x3x8t37x.alert_note(ru-ru,VS.90).gifПримечание.

Веб-обозреватель Internet Explorer до версии 6.0 включительно способен обрабатывать URL-адреса длиной до 2 048 символов, включая строку запроса. Если длина URL-адреса превышает 2 048 символов, это может привести к ошибке или усечению строки запроса или к тому, что данные строки запроса не будут посланы с URL-адресом. В веб-страницах ASP.NET длина запроса GET, включающего отправляемые данные, может легко превысить 2 048 символов, если сведения о состоянии отображения (хранящиеся в скрытом поле) являются частью запроса, что приведет к ошибке. Другие обозреватели могут не иметь подобных ограничений. Подробные сведения см. в статье 208247 базы знаний Майкрософт «Maximum URL Length Is 2,083 Characters in Internet Explorer» (https://support.microsoft.com). Чтобы обойти это ограничение при использовании общей информации многими страницами, можно перенаправлять пользователя с помощью запросов HTTP POST, как описано выше. Если приложение требует использования запроса HTTP GET, то можно хранить информацию альтернативным способом, не используя строку запроса, например в состоянии сеанса.

Перенаправление программными средствами на сервере

Также можно выполнить перенаправление программными средствами на целевую страницу на сервере, вызвав метод Transfer. В этом сценарии сервер просто передает контекст текущей исходной страницы целевой. Целевая страница отображается вместо исходной. Исходная и целевая страницы должны располагаться в одном веб-приложении. Как и в случае с межстраничной записью данных, метод Transfer имеет то преимущество, что он позволяет исходной странице считывать значения параметров элементов управления и значения открытых свойств из исходной страницы.

Поскольку перемещение между исходной и целевой страницами происходит на сервере, обозреватель не получает сведения об изменении страницы и сохраняет информацию об исходном URL-адресе. Например, поле Адрес в веб-обозревателе Internet Explorer не изменяется после перемещения и продолжает отображать URL-адрес недавно запрошенной страницы (которая обычно является исходной). История обозревателя также не обновляется с учетом изменений. Это может привести к неожиданному поведению, если пользователь захочет обновить страницу в обозревателе или нажмет кнопку «Назад». Таким образом, вызов метода Transfer — это стратегия, выбираемая в приложениях, где необходимо предоставить пользователю страницу, скрыв при этом URL-адрес.

Выбор варианта перенаправления

В представленной ниже таблице сведены основные способы перенаправления между страницами.

Стратегия

Характеристики

Использование

Гиперссылки

  • Выполняет новый запрос на целевой странице.

  • Не передает сведения о текущей странице целевой.

  • Инициируется пользователем.

  • Перенаправляет на любую страницу, а не только на страницу в пределах того же веб-приложения.

  • Позволяет использовать общую информацию несколькими страницами, использующими строку запроса или состояние сеанса. (элемент управления HyperLink позволяет создавать URL-адрес и строки запросов программными средствами).

  • Для перемещения без дополнительной обработки, как в меню или списках ссылок.

  • Когда перемещение должно контролироваться пользователем.

Межстраничная запись данных

  • Передает информацию о текущей странице целевой.

  • Делает передаваемую информацию доступной на целевой странице.

  • Инициируется пользователем.

  • Перенаправляет на любую страницу, а не только на страницу в пределах того же веб-приложения.

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

  • Для передачи информации о текущей странице целевой (как в многостраничных формах).

  • Когда перемещение должно контролироваться пользователем.

Перенаправление обозревателем

  • Выполняет новый запрос HTTP GET на целевой странице.

  • Передает строку запроса (если есть) целевой странице. В веб-обозревателе Internet Explorer длина строки запроса ограничена 2 048 символами.

  • Предоставляет программные и динамические средства управления целевым URL-адресом и строкой запроса.

  • Позволяет перенаправлять на любую страницу, не только в пределах веб-приложения.

  • Позволяет одновременно использовать общую информацию исходной и целевой страницами посредством состояния сеанса.

  • Перемещение, зависящее от условия, когда нужно контролировать целевой URL-адрес и момент перехода. Например, этот вариант используется, если приложение должно определить, на какую страницу перейти, основываясь на сведениях, предоставленных пользователем.

Серверное перемещение

  • Перемещение элемента управления на новую страницу, которая отображается вместо исходной.

  • Перенаправляет только на целевые страницы, принадлежащие тому же веб-приложению, что и исходная.

  • Позволяет считывать значения и открытые свойства исходной страницы.

  • Не обновляет информацию о целевой странице в обозревателе. При нажатии кнопки «Обновить» или «Назад» поведение обозревателя может быть неожиданным.

  • Для перемещения, зависящего от условия, когда нужно контролировать время перехода и иметь доступ к контексту исходной страницы.

  • Оптимально подходит при необходимости скрыть URL-адрес от пользователя.

См. также

Задачи

Практическое руководство. Передача значений между веб-страницами ASP.NET

Практическое руководство. Передача веб-страниц ASP.NET другой странице

Практическое руководство. Определение способа вызова веб-страниц ASP.NET

Основные понятия

Общие сведения об управлении состоянием ASP.NET