aspx для перенаправления на новую страницу

Какой код требуется для перенаправления браузера на новую страницу со страницей ASPX?

Я пробовал это на своей странице default.aspx:

<% Response.Redirect("new.aspx", true); %>

or

<%@ Response.Redirect("new.aspx", true); %>

И это привело к ошибке сервера, которая не определена. Я не вижу код ошибки; потому что сервер не находится под моим контролем, и ошибки не являются общедоступными.

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


person Stoob    schedule 07.07.2009    source источник


Ответы (8)


Вы также можете сделать это прямо в html с помощью метатега:

<html>
<head>
  <meta http-equiv="refresh" content="0;url=new.aspx" />
</head>
<body>
</body>
</html>
person jrummell    schedule 07.07.2009
comment
Серьезно, что с голосами против? Если все, что вам нужно использовать, это перенаправление на другую страницу, вам не нужно использовать ASP.Net. Если вам нужно забить гвоздь и вы можете выбрать между обычным молотком и кувалдой, что бы вы выбрали? Надеюсь, ты скажешь нормальный молоток. - person jrummell; 07.07.2009
comment
Это было html-решение проблемы asp.net. - person Daniel A. White; 07.07.2009
comment
Верно, но HTML - это ОГРОМНАЯ часть ASP.NET. - person jrummell; 07.07.2009
comment
немного расслабься с парнем, я дал тебе позитив просто за то, что ты вежливый. это хороший резервный способ сделать это, если первый вариант ASP.NET не сработал. - person Stoob; 07.07.2009
comment
Спасибо за голосование "за". Я не хотел никого обидеть. Я просто хотел указать, что для перенаправления вам не нужны сценарии на стороне сервера. - person jrummell; 07.07.2009
comment
в этом случае мне нужно было сделать это на стороне сервера, иначе HTML работал бы нормально - person Stoob; 12.06.2010
comment
Это менее эффективный способ перенаправления по нескольким причинам. Вот два: 1) это перенаправление 301, поэтому в будущем люди все еще могут быть перенаправлены на старые поисковые системы формы страницы 2) есть дополнительная обратная связь для браузера перед перенаправлением на новую страницу, в то время как решение asp.net пропускает то туда-сюда и переходит прямо на новую страницу. - person furtive; 29.03.2011
comment
Хотя я согласен с тем, что это далеко не идеальное решение, нет ничего плохого (на самом деле, это полезно) в наличии нескольких вариантов выбора, и это, безусловно, работает. +1 за то, что был хорошим парнем и предложил рабочее решение. - person Ehtyar; 11.08.2011
comment
W3C отказался от использования элемента META для обновления или перенаправления. w3.org/TR/WCAG10-HTML-TECHS/#meta- элемент - person Jason Stangroome; 27.06.2012
comment
Я не голосовал против, но я бы также избегал этого решения, поскольку оно полагается на синтаксический анализ HTML для отслеживания перенаправления - это нормально для большинства браузеров, но не для клиентских приложений, которые все должны понимать, как следовать правильным перенаправлениям (например, попробуйте получить содержимое страницы с использованием System.Net.WebRequest при перенаправлении с использованием обоих методов. Он будет следовать за заголовком, он не будет следовать за META) - person Basic; 06.11.2012
comment
Я согласен, это не лучший ответ, но все же ответ. - person jrummell; 06.11.2012
comment
@furtive Я бы сказал, что это лучший способ перенаправления, поскольку адресная строка браузера будет отражать тот факт, что отображаемый URL-адрес отличался от того, который запрашивал пользователь. Response.Redirect не дает пользователю понять, что URL-адрес изменился. - person Jonathan Sayce; 13.11.2013
comment
Это не лучший способ перенаправления, поскольку это не перенаправление 301, и поэтому браузеры всегда будут указывать на неправильный (старый) URL-адрес. - person furtive; 16.11.2013
comment
перенаправление кода на стороне сервера - это 301 или, может быть, 302, так что в любом случае отскакивает браузер клиента. Единственное отличие состоит в том, что сторона сервера выдает настоящий HTTP-заголовок ответа, а не эмулируемый HTTP-эквивалент, и сервер (в зависимости от того, как он настроен) фактически выдает 200 OK для перенаправления html. Итак, да, лучше выполнить перенаправление с правильным заголовком, что необходимо сделать с файлом aspx или настроить его на веб-сервере (что обычно является лучшим местом для перенаправления, особенно когда нет логических условий) - person James Wakefield; 02.02.2015

Ответ Дарина отлично работает. Создает 302 редирект. Вот код, измененный таким образом, что он создает постоянное перенаправление 301:

<%@ Page Language="C#" %>
<script runat="server">
  protected override void OnLoad(EventArgs e)
  {
      Response.RedirectPermanent("new.aspx");
      base.OnLoad(e);
  }
</script>
person Mikael Koskinen    schedule 03.07.2013
comment
Хороший! Ребятам из SEO это понравилось. - person callisto; 09.10.2013
comment
Вау, я не говорил об этом до сих пор. - person furtive; 16.11.2013
comment
Обратите внимание, что это .net framework 4.0 и новее; не framework 2 и т. д. См. msdn.microsoft.com / ru-ru / library / - person GlennG; 28.04.2014

Если вы используете VB, вам нужно опустить точку с запятой:

<% Response.Redirect("new.aspx", true) %>
person wweicker    schedule 07.07.2009
comment
У меня тоже работает, и это более короткий ответ. - person omarrr; 07.12.2013

Или вы можете использовать javascript для перенаправления на другую страницу:

<script type="text/javascript">
    function toRedirect() {
        window.location.href="new.aspx";
    }
</script>

Вызовите эту toRedirect() функцию с клиента (например, событие onload тега body) или с сервера, используя:

ClientScript.RegisterStartupScript(this.gettype(),"Redirect","toRedirect()",true);
person Prasad Jadhav    schedule 03.07.2012

Даже если вы не управляете сервером, вы все равно можете видеть сообщения об ошибках, добавив следующую строку в файл Web.config в своем проекте (ниже <system.web>):

<customErrors mode="off" />
person SLaks    schedule 07.07.2009

Перенаправить aspx:

<iframe>

    <script runat="server">
    private void Page_Load(object sender, System.EventArgs e)
    {
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://www.avsapansiyonlar.com/altinkum-tatil-konaklari.aspx");
    }
    </script>

</iframe>
person mad master    schedule 08.06.2014

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

person marcob    schedule 26.06.2019

person    schedule
comment
Какова цель наличия base.OnLoad(e); после Response.Redirect(..)? - person Tapan; 13.08.2014
comment
Дарин, я знаю, что это очень старый ответ, но есть ли причина для base.OnLoad? - person gdoron is supporting Monica; 01.02.2016
comment
@gdoron Я думаю, что это только потому, что автозаполнение Visual Studio вставляет его, когда вы начинаете вводить метод OnLoad. Вроде бы и без него работает. - person Kevin Panko; 04.05.2016
comment
Хотел бы я проголосовать за этот ответ. Теперь я не могу проголосовать за то, что в нем 50% избыточного кода ... :( Дарин, вы действительно должны его отредактировать или объяснить, почему вы включили вызов базового метода. - person gdoron is supporting Monica; 04.05.2016