93 votes

Comment obtenir l'URL du référent dans une action ASP.NET MVC ?

Comment obtenir l'URL du référent dans une action ASP.NET MVC ? J'essaie de rediriger vers la page avant d'appeler une action.

5 votes

N'oubliez pas que tous les agents utilisateurs (c'est-à-dire les navigateurs) n'envoient pas les informations de référence, et que certains peuvent même les falsifier.

155voto

Derek Lawless Points 1524

Vous pouvez utiliser Request.UrlReferrer pour obtenir l'URL de référence si vous n'aimez pas accéder à l'URL de référence. Request.ServerVariables directement le dictionnaire.

0 votes

C'est exactement ce dont j'ai besoin. Merci, mon frère !

0 votes

Request.UrlReferrer est en fait l'URI mais à partir de là, vous pouvez obtenir tout ce dont vous avez besoin concernant l'URL du référent. (Plus d'informations sur URI et URL : stackoverflow.com/questions/176264/ ).

20voto

Daniel Elliott Points 13253
Request.ServerVariables["http_referer"]

Il faut le faire.

9voto

Navish Rampal Points 122

Vous pouvez utiliser ce

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2 votes

Cela fonctionnerait dans un contexte de filtre, mais pas dans un contexte d'action comme le demande la question.

4voto

andr3y Points 38

Vous pouvez passer l'url du référent au viewModel, à mon avis c'est une meilleure approche que le partage via l'état, essayez ainsi :

public interface IReferrer
{
    String Referrer { get; set; }
}

...

public static MvcHtmlString HiddenForReferrer<TModel>(this HtmlHelper<TModel> htmlHelper) where TModel : IReferrer
{
    var str = htmlHelper.HiddenFor(hh => hh.Referrer);
    var referrer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri;
    return new MvcHtmlString(str.ToHtmlString().Replace("value=\"\"", String.Format("value=\"{0}\"", referrer)));
}

...

@Html.HiddenForReferrer()

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