2011-02-05 15 views
15

Request का उपयोग किए बिना होस्ट कैसे प्राप्त करूं? इस कोड को एक नियंत्रक में रखा जा सकता है:एएसपी.नेट एमवीसी वर्तमान होस्ट

return String.Equals(this.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase); 

लेकिन मैं इसे एक नियंत्रक से बाहर जाने रहा हूँ और एक और तरीका यह this.Request.Url.Host को बदलने के लिए खोजने की जरूरत है।

Url.IsLocalUrl(returnUrl); 

मेरे सहायक विधि इस तरह दिखेगा:

public static string GetLocalUrl(string url) 
{ 
    if(Url.IsLocalUrl()){ 
     return url; 
    } 
    else{ 
     return Action("Security", "Home"); 
    } 
} 

उत्तर

10

या तो HttpContext.Current.Request उपयोग करें, याका एक उदाहरण इंजेक्षनजो कुछ भी है उसे इस जानकारी की आवश्यकता है। मैं विकल्प 2 की सिफारिश करता हूं क्योंकि आप आसानी से इस अन्य घटक का परीक्षण कर सकते हैं। चूंकि HttpContextBase को मॉक/स्टब किया जा सकता है।

+1

लेकिन, जब मुझे अपवाद मिलता है तो कैसे हो: 'System.Web.HttpException: अनुरोध इस संदर्भ में उपलब्ध नहीं है ? –

17

आप एक नियंत्रक के इस बाहर का उपयोग कर सकते

मेरे पूरा उद्देश्य एक सहायक कक्षा में इस विधि के लिए उपयोग किया जा सकता है:

System.Web.HttpContext.Current.Request.Url 
+0

यह एक MVC5 परियोजना में चाल किया था। चूंकि यह कोड एक नियंत्रक में था, इसलिए संभवतः यह मानना ​​सुरक्षित है कि हमेशा से एक व्यवहार्य संदर्भ होगा। –

1

एचटीएमएल सहायक में आप उपयोग कर सकते हैं

htmlHelper.ViewContext.HttpContext.Request.Url 
संबंधित मुद्दे