Wie erhalte ich die Referrer-URL in einer ASP.NET MVC-Aktion?


85

Wie erhalte ich die Referrer-URL in einer ASP.NET MVC-Aktion? Ich versuche, zur Seite zurückzukehren, bevor Sie eine Aktion aufgerufen haben.


5
Beachten Sie, dass nicht alle Benutzeragenten (AKA-Browser) die Referrer-Informationen senden und einige sie möglicherweise sogar fälschen.
Belugabob

Antworten:




8

Sie können dies verwenden

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2
Dies würde in einem Filterkontext funktionieren, jedoch nicht im Aktionskontext, wie die gestellte Frage.
Jace Rhea

3

Sie können die Referrer-URL an viewModel übergeben. Meiner Meinung nach ist dies ein besserer Ansatz als das Teilen über den Status. Versuchen Sie Folgendes:

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
huh, nie realisiert Unterstrich für sich ist ein gültiger Variablenname. Wie wäre es damit?
BVernon

@BVernon Die eigentliche Frage ist, warum jemand es so verwenden würde. Die einzige Konvention, die mir mit einem einzelnen Unterstrich für einen Namen bekannt ist, besteht darin, anzuzeigen, dass es sich nur um einen Platzhalter für eine Variable handelt, die Sie nicht möchten oder benötigen.
Daniel

@ Daniel Ich stimme zu, behoben
Andrey Burykin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.