Yönlendiren URL'yi bir ASP.NET MVC eyleminde nasıl alırım?


89

Yönlendiren URL'yi bir ASP.NET MVC eyleminde nasıl alırım? Siz bir eylemi çağırmadan önce sayfaya geri yönlendirmeye çalışıyorum.


5
Tüm kullanıcı aracılarının (AKA tarayıcıları) yönlendiren bilgilerini göndermeyeceğini ve hatta bazılarının sahte olabileceğini unutmayın.
belugabob

Yanıtlar:


148

Sözlüğe doğrudan Request.UrlReferrererişmekten hoşlanmıyorsanız, yönlendiren URL'yi almak için de kullanabilirsiniz Request.ServerVariables.


Tam da ihtiyacım olan şey. Teşekkürler kardeşim!
DmitryBoyko

Request.UrlReferreraslında URI'dir, ancak oradan yönlendiren URL ile ilgili ihtiyacınız olan her şeyi alabilirsiniz. (URI ve URL hakkında daha fazla bilgi: stackoverflow.com/questions/176264/… ).
Miguel


9

Bunu kullanabilirsin

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2
Bu, bir filtre bağlamında işe yarar, ancak sorulduğu gibi eylem bağlamında çalışmaz.
Jace Rhea

3

ViewModel'e yönlendiren url'yi iletebilirsiniz, bence daha iyi bir yaklaşım daha sonra devlet aracılığıyla paylaşmak, şunu deneyin:

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, altçizgi hiçbir zaman tek başına geçerli bir değişken adıdır. Buna ne dersin?
BVernon

@BVernon Asıl soru, neden birinin onu bu şekilde kullanacağıdır. Bir isim için tek bir alt çizgi ile bildiğim tek kural, bunun istemediğiniz veya ihtiyaç duymadığınız bir değişken için sadece bir yer tutucu olduğunu belirtmektir.
Daniel

@Daniel Kabul ediyorum, düzeltildi
Andrey Burykin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.