¿Cómo obtengo la URL de referencia en una acción ASP.NET MVC?


88

¿Cómo obtengo la URL de referencia en una acción ASP.NET MVC? Estoy tratando de redirigir a la página antes de que llamaras a una acción.


5
Tenga en cuenta que no todos los agentes de usuario (también conocidos como navegadores) enviarán la información de referencia, y algunos incluso pueden falsificarla.
belugabob

Respuestas:


148

También puede utilizar Request.UrlReferrerpara obtener la URL de referencia si no le gusta acceder al Request.ServerVariablesdiccionario directamente.


Es exactamente lo que necesito. ¡Gracias hermano!
DmitryBoyko

Request.UrlReferreres en realidad el URI, pero desde allí puede obtener todo lo que necesita con respecto a la URL de referencia. (Más sobre URI vs URL: stackoverflow.com/questions/176264/… ).
Miguel


8

Puedes usar esto

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2
Esto funcionaría en un contexto de filtro, pero no en el contexto de acción como se solicita en la pregunta.
Jace Rhea

3

Puede pasar la URL de referencia a viewModel, en mi opinión, es mejor enfoque que compartir a través del estado, intente así:

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()

1
eh, nunca me di cuenta de que el subrayado por sí solo es un nombre de variable válido. ¿Qué tal eso?
BVernon

@BVernon La verdadera pregunta es por qué alguien lo usaría de esa manera. La única convención que conozco con un solo guión bajo para un nombre es para significar que es solo un marcador de posición para una variable que no desea o necesita.
Daniel

@Daniel Estoy de acuerdo, arreglado
Andrey Burykin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.