382 votes

Comment obtenir l'URL de la page en cours dans MVC 3

J'utilise le plugin "Commentaires Facebook" sur un blog que je suis en train de créer. Il comporte des balises FBXML qui sont interprétées par le javascript Facebook référencé sur la page.

Tout cela fonctionne bien, mais je dois transmettre l'URL actuelle, entièrement qualifiée, au plugin.

<div style="width: 900px; margin: auto;">
    <div id="fb-root"></div>
    <fb:comments href="URL HERE" num_posts="10" width="900"></fb:comments>
</div>

Quelle est la meilleure façon d'obtenir l'URL de la page actuelle ? L'URL de la requête.

Solution

Voici le code final de ma solution :

<fb:comments href="@Request.Url.AbsoluteUri" num_posts="15" width="900"></fb:comments>

4voto

Carter Points 3877

Mon préféré...

Url.Content(Request.Url.PathAndQuery)

ou juste...

Url.Action()

2voto

tdahman1325 Points 71

Cela a fonctionné pour moi pour Core 3.0 pour l'URL complète :

$"{Request.Scheme}://{Request.Host.Value}{Request.Path.Value}"

1voto

Lyall Points 566

Une chose qui n'est pas mentionnée dans les autres réponses est la sensibilité aux majuscules et minuscules, si elle doit être référencée à plusieurs endroits (ce qui n'est pas le cas dans la question originale mais qui vaut la peine d'être pris en considération car cette question apparaît dans de nombreuses recherches similaires). En me basant sur d'autres réponses, j'ai trouvé que ce qui suit a fonctionné pour moi au départ :

Request.Url.AbsoluteUri.ToString()

Mais afin d'être plus fiable, cela est devenu :

Request.Url.AbsoluteUri.ToString().ToLower()

Puis pour mes besoins (vérifier le nom de domaine à partir duquel le site est consulté et afficher le contenu pertinent) :

Request.Url.AbsoluteUri.ToString().ToLower().Contains("xxxx")

1voto

Leon Points 1

Pour moi, le problème était lorsque j'ai essayé d'accéder à HTTPContext dans le constructeur du contrôleur alors que HTTPContext n'est pas encore prêt. Lorsqu'il est déplacé dans la méthode Index, il fonctionne :

var uri = new Uri(Request.Url.AbsoluteUri);
url = uri.Scheme + "://" + uri.Host + "/";enter code here

0voto

Le cas (style page unique) de l'historique du navigateur

HttpContext.Request.UrlReferrer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X