मुझे ASP.NET MVC कार्रवाई में रेफरल URL कैसे मिलेगा?


88

मुझे ASP.NET MVC कार्रवाई में रेफरल URL कैसे मिलेगा? आपके द्वारा कार्रवाई करने से पहले मैं पृष्ठ पर वापस भेजना चाह रहा हूं।


5
यह ध्यान रखें कि सभी उपयोगकर्ता-एजेंट (AKA ब्राउज़र) रेफ़रर जानकारी नहीं भेजेंगे, और कुछ इसे नकली भी बना सकते हैं।
बेलुगबोब

जवाबों:


148

Request.UrlReferrerयदि आप Request.ServerVariablesसीधे शब्दकोश तक पहुँचना पसंद नहीं करते हैं, तो आप संदर्भित URL प्राप्त करने के लिए उपयोग कर सकते हैं ।


यह वही है जो मुझे चाहिए। धन्यवाद भाई!
दिमित्रीबॉयको

Request.UrlReferrerवास्तव में यूआरआई है, लेकिन वहां से आपको वह सब कुछ मिल सकता है जो आपको रेफरल यूआरएल के संबंध में चाहिए। (URI बनाम URL के बारे में अधिक जानकारी: stackoverflow.com/questions/176264/… )।
मिगेल 19


8

आप इसका उपयोग कर सकते हैं

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2
यह एक फ़िल्टर संदर्भ में काम करेगा, लेकिन एक्शन के संदर्भ में नहीं जैसा कि सवाल पूछा गया था।
Jace Rhea

3

आप referrer url को viewModel से पास कर सकते हैं, मेरी राय में यह राज्य के माध्यम से साझा करना बेहतर दृष्टिकोण है, इसलिए प्रयास करें:

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
हुह, कभी भी महसूस नहीं किया गया अंडरस्कोर अपने आप में एक वैध चर नाम है। कैसे 'कि डटकर
बीवरनॉन

@BVernon असली सवाल यह है कि कोई भी इस तरह से इसका इस्तेमाल करेगा। एक नाम के लिए एक एकल अंडरस्कोर के साथ मैं केवल परिचित हूं, यह संकेत करना है कि यह एक चर के लिए एक प्लेसहोल्डर है जिसे आप चाहते हैं या ज़रूरत नहीं है।
डेनियल

@ डैनियल मैं सहमत हूं, तय
एंड्री ब्यूकिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.