2009-10-10 5 views
122

Je tente de rediriger vers une URL externe à partir d'une méthode d'action, mais je n'arrive pas à l'utiliser. Quelqu'un peut-il faire la lumière sur mon erreur?Rediriger vers l'URI externe à partir du contrôleur 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); 
    } 

Merci, Chris

+1

Quelle est votre erreur? Ou symptôme? Est-ce que ça va n'importe où? –

Répondre

263

Si vous parlez de ASP.NET MVC, alors vous devriez avoir une méthode de contrôleur qui renvoie les éléments suivants:

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

Sinon, nous avons besoin de plus d'informations sur l'erreur que vous obtenez dans la redirection. Je franchirais le pas pour m'assurer que l'url n'est pas vide.

+5

Facultativement, vous pouvez le faire à la place: return new RedirectResult ("yourURL", true); qui est presque exactement le même, mais vous donne le paramètre à la fin pour indiquer s'il s'agit d'une redirection permanente ou non (HTTP 301 vs autre chose, 307 peut-être?) – ctb

+0

Ceci utilise le code de réponse 302? https://en.wikipedia.org/wiki/HTTP_302 –

+0

@ Mr.Pichler Probablement 302, mais vous pouvez toujours vérifier avec Fiddler. –

8

L'utilisation de JavaScript

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

Note: Comme l'a dit Ray Brown @ Jeremy, Ce n'est pas la meilleure option, mais vous trouverez peut-être utile dans certaines situations.

Espérons que cela aide.

+1

Quelque chose comme ça peut fonctionner, mais un contrôleur décide de l'action à effectuer. Vous n'avez pas besoin d'un script pour être impliqué. –

+4

Croyez-le ou non, quelque chose comme cette approche m'a aidé. Nous avons une application hybride ASP.NET MVC/AngularJS avec beaucoup de vieux codes de formulaires Web partout. J'ai utilisé quelque chose de similaire pour rediriger vers une URL qui utilise le routage angulaire. Étant donné que le routage angulaire suit un # dans l'URL, il n'est reconnu que côté client, de sorte que Redirect ne peut pas être utilisé pour de telles URL. – thesentiment

+0

Ce n'est pas la "meilleure façon", mais ça marche bien. – TNT

Questions connexes