2010-02-16 3 views
2

Я работаю над веб-сайтом, который я унаследовал (ASP.NET и C#), и я заметил, что почти в любом порядке в коде позади страниц проекта (за исключением некоторых вспомогательных методов) исходный автор использует Response.Redirect() для перенаправления на страницу (обычно home.aspx, но не всегда).Использование Response.Redirect в C#

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

Спасибо.

+0

Не похоже на то, что вы опубликовали, но нам, вероятно, нужно будет узнать больше. – ChadT

+0

Типично Response.Redirect причины и HTTP-перенаправление http://en.wikipedia.org/wiki/HTTP_302 – ziya

ответ

4

Response.Redirect() выдает заголовок 302 HTTP Redirect в браузер, что заставляет браузер запрашивать новую страницу с вашего веб-сайта.

Если автор использовал шаблон POST-Redirect-GET, чтобы остановить проблему, когда пользователи могут нажимать кнопку «Обновить» и формы репозиции, это может объяснить, почему она используется повсюду.

0

Без дополнительной информации трудно быть окончательным.

Однако, если home.aspx является пустой страницей, возможно, что первоначальный автор, возможно, пытался завершить обработку страницы с самого начала, чтобы предотвратить последующую обработку.

Как правило, Response.Redirect() используется для завершения ответа и информирования браузера о переходе на новую страницу. Однако, если браузер имеет эту страницу, она не может фактически совершить поездку на сервер. Я видел некоторые случаи, когда разработчики делают это как способ короткого замыкания последующей обработки.

Также возможно, что код делает что-то сумасшедшее, например, сделать home.aspx главной страницей отображения всех данных - и использовать состояние сеанса или кеш для обмена изменениями между страницами. К сожалению, я тоже это видел ... sigh. Часто это делается для того, чтобы пользователь мог многократно представлять формы.

+0

Нет, главная страница home.aspx - это домашняя страница (и она определенно не пуста - немного слишком заполнена, по сути, но это еще одна проблема). – JasCav

0

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

0

Он отправляет ответ пользовательскому агенту/браузеру и сообщает ему перенаправить на указанную страницу. Он может быть помещен в любую часть кода, но по умолчанию страница будет выполняться до завершения, тогда ответ на перенаправление будет установлен клиенту ...

Это должно быть необходимо только в последнем пункте код, который вы используете (обычно)

+0

В коде, который я просмотрел, Response.Redirects всегда являются последней частью кода (самая последняя строка в методе внутри кода).Но много раз перенаправление будет на страницу, на которой я уже включен. Вот что меня смущает. – JasCav

+0

Правильно! он должен «вообще» быть ... Response.Redirect может быть вызван в любой точке, но из памяти, и ответ перенаправления будет отправлен в браузер после того, как страница полностью закончит рендеринг ... Если они перенаправлялись на текущая страница, то это путает !!! Мысль @ womp может быть разумным предположением !!! – jwwishart

0

Страницы ASP.NET. Вернитесь к себе, поэтому некоторые используют метод перенаправления, чтобы открыть новую страницу. Используйте его, когда вам это нужно. Если вы не видите разницы при его удалении. Возможно, сайт использует ссылки для перехода с одной страницы на другую, вместо того, чтобы делать это через сервер.

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