2009-07-07 28 views
59

¿Cuál es el código requerido para redirigir el navegador a una nueva página con una página ASPX?página aspx para redirigir a una nueva página

He intentado esto en mi página default.aspx:

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

o

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

Y ellos se produjo un error de servidor que es indeterminado. No puedo ver el código de error; porque el servidor no está bajo mi control y los errores no son públicos.

Proporcione todos los códigos necesarios de la línea 1 de la página hasta el final, y realmente lo agradecería.

Respuesta

124
<%@ Page Language="C#" %> 
<script runat="server"> 
    protected override void OnLoad(EventArgs e) 
    { 
     Response.Redirect("new.aspx"); 
    } 
</script> 
+11

¿Cuál es el propósito de tener 'base.OnLoad (e);' 'después Response.Redirect (..) '? – Tapan

+0

Darin Sé que es una respuesta muy antigua, pero ¿hay alguna razón para el 'base.OnLoad'? – gdoron

+0

@gdoron Creo que solo está allí porque Visual Studio autocomplete lo inserta cuando empiezas a escribir el método 'OnLoad'. Parece funcionar igual de bien sin eso. –

11

Si está utilizando VB, es necesario colocar el punto y coma:

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

Funciona bien para mí también y es más corto – omarrr

21

También podría hacer esto es normal en HTML con un meta tag:

<html> 
<head> 
    <meta http-equiv="refresh" content="0;url=new.aspx" /> 
</head> 
<body> 
</body> 
</html> 
+0

¿Por qué el voto abajo? – jrummell

+0

En serio, ¿qué pasa con los votos a la baja? Si todo lo que necesita es redirigir a otra página, no tiene que usar ASP.Net. Si necesita manejar un clavo y usted podría elegir entre un martillo normal y un martillo, ¿cuál elegirías? Espero que digas el martillo normal. – jrummell

+3

Yo voto el martillo neumático. Neumática es la única forma de volar. –

2

Incluso si no controle el servidor, aún puede ver los mensajes de error agregando la siguiente línea al archivo Web.config en su proyecto (bewlow <system.web>):

<customErrors mode="off" /> 
3

O puede usar javascript para redirigir a otra página:

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

Llame a este toRedirect() función del cliente (por ejemplo: proceso de carga del cuerpo de la etiqueta) o desde un servidor usando:

ClientScript.RegisterStartupScript(this.gettype(),"Redirect","toRedirect()",true); 
13

La respuesta de Darin funciona muy bien. Crea un redireccionamiento 302. Aquí está modificó el código para que se crea una redirección permanente 301:

<%@ Page Language="C#" %> 
<script runat="server"> 
    protected override void OnLoad(EventArgs e) 
    { 
     Response.RedirectPermanent("new.aspx"); 
     base.OnLoad(e); 
    } 
</script> 
+0

¡Buena esa! A los chicos de SEO les encantó esto. – callisto

+0

Wow, no sabía nada de eso hasta ahora. – furtive

+0

Tenga en cuenta que esto es .NET Framework 4.0 y posterior; no marco 2, etc. Consulte http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx – GlennG

0

redirección 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> 
Cuestiones relacionadas