2009-10-10 28 views
122

Estoy intentando redirigir a una URL externa desde un método de acción pero no puedo hacer que funcione. ¿Alguien puede arrojar algo de luz sobre mi error?Redirigir a un URI externo desde el controlador ASP.NET MVC

public void ID(string id) 
    { 
     string url = string.Empty; 
     switch (id) 
     { 
      case "DB2FCB11-579F-4DA2-A68C-A6495B9BAAB5": 

       url = "http://www.somesite.com"; 
       break; 
     } 
     Response.Redirect(url, true); 
    } 

Gracias, Chris

+1

¿Cuál es su error? O síntoma? ¿Esto va a alguna parte? –

Respuesta

263

Si estamos hablando acerca de ASP.NET MVC, entonces debería haber un método controlador que devuelve lo siguiente:

return Redirect("http://www.google.com"); 

De lo contrario, necesitamos más información sobre el error que está recibiendo en la redirección. Me paso para asegurarme de que la URL no esté vacía.

+5

Opcionalmente, puede hacer esto en su lugar: devolver el nuevo RedirectResult ("yourURL", verdadero); que es casi exactamente igual, pero le da el parámetro al final para indicar si se trata de una redirección permanente o no (HTTP 301 vs. algo más, ¿307 tal vez?) – ctb

+0

¿Utiliza el código de respuesta 302? https://en.wikipedia.org/wiki/HTTP_302 –

+0

@ Mr.Pichler Probablemente 302, pero siempre puedes consultar con Fiddler. –

8

Uso de JavaScript

public ActionResult Index() 
{ 
    return Content("<script>window.location = 'http://www.example.com';</script>"); 
} 

Nota: Como dijo @Jeremy Ray Brown, Esta no es la mejor opción, pero le puede resultar útil en algunas situaciones.

Espero que esto ayude.

+1

Algo como esto puede funcionar, pero un controlador decide qué acción realizar. No necesita un script para involucrarse. –

+4

Lo creas o no, algo como este enfoque me ayudó. Tenemos una aplicación híbrida ASP.NET MVC/AngularJS con muchos códigos de formularios web antiguos por todas partes. Usé algo similar para redirigir a una URL que usa enrutamiento angular. Debido a que el enrutamiento angular sigue una marca # en la URL, solo se reconoce en el lado del cliente, por lo que Redirect no se puede utilizar para dichas URL. – thesentiment

+0

No es la "mejor manera", pero funciona bien. – TNT

Cuestiones relacionadas