Jak uzyskać adres URL strony odsyłającej w akcji ASP.NET MVC?


88

Jak uzyskać adres URL strony odsyłającej w akcji ASP.NET MVC? Próbuję przekierować z powrotem na stronę, zanim wywołałeś akcję.


5
Pamiętaj, że nie wszystkie programy użytkownika (przeglądarki AKA) wysyłają informacje o stronie odsyłającej, a niektóre mogą nawet je sfałszować.
belugabob

Odpowiedzi:


148

Możesz również użyć, Request.UrlReferreraby uzyskać odsyłający adres URL, jeśli nie lubisz Request.ServerVariablesbezpośredniego dostępu do słownika.


To jest dokładnie to, czego potrzebuję. Dzięki, stary!
DmitryBoyko

Request.UrlReferrerjest w rzeczywistości identyfikatorem URI, ale stamtąd możesz uzyskać wszystko, czego potrzebujesz, jeśli chodzi o adres URL strony odsyłającej. (Więcej informacji o URI i URL: stackoverflow.com/questions/176264/ ... ).
Miguel


8

Możesz tego użyć

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2
To zadziałałoby w kontekście filtru, ale nie w kontekście akcji, jak postawione pytanie.
Jace Rhea

3

Możesz przekazać adres odsyłający do viewModel, moim zdaniem jest to lepsze podejście niż udostępnianie przez stan, spróbuj:

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, nigdy nie zrealizowane podkreślenie samo w sobie jest poprawną nazwą zmiennej. Co powiesz na to.
BVernon

@BVernon Prawdziwe pytanie brzmi, dlaczego ktokolwiek miałby używać tego w ten sposób. Jedyną konwencją, jaką znam z pojedynczym podkreśleniem dla nazwy, jest wskazanie, że jest to tylko symbol zastępczy zmiennej, której nie chcesz lub nie potrzebujesz.
Daniel

@Daniel Zgadzam się, naprawiono
Andrey Burykin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.