2010-01-15 14 views
28

में किसी भी फ़ाइल का पूरा यूआरएल प्राप्त करना मैं एमवीसी में किसी भी फाइल के पूर्ण यूआरएल (डोमेन नाम आदि के साथ) उत्पन्न करना चाहता हूं। उदाहरण: .jpg फ़ाइल या exe फ़ाइल।एएसपी.NET एमवीसी

उदाहरण: अगर मैं दे "~/images/abc.jpg" इसे वापस चाहिए "http://www.mywebsite.com/images/abc.jpg"

मैं Url.Action अधिभार कि एक पैरामीटर के रूप प्रोटोकॉल लेता है के बारे में पता कर रहा हूँ। लेकिन Url.Action केवल क्रियाओं के लिए उपयोग किया जा सकता है।

मुझे Url.Content फ़ंक्शन जैसा कुछ चाहिए जो पैरामीटर के रूप में प्रोटोकॉल लेता है।

क्या आप जानते हैं कि किसी भी फ़ाइल का पूरा यूआरएल प्राप्त करने के लिए कोई तरीका है?

मैंने कोशिश की है: VirtualPathUtility.ToAbsolute, ResolveClientUrl, ResolveUrl लेकिन ये सभी काम नहीं कर रहे हैं।

उत्तर

46

आप "~ /" को अनुपयुक्त यूआरएल में बदलने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं।

System.Web.VirtualPathUtility.ToAbsolute("~/") 

संपादित करें:

सबसे पहले आप एक विधि को परिभाषित करने की जरूरत है।

public static string ResolveServerUrl(string serverUrl, bool forceHttps) 
{ 
    if (serverUrl.IndexOf("://") > -1) 
     return serverUrl; 

    string newUrl = serverUrl; 
    Uri originalUri = System.Web.HttpContext.Current.Request.Url; 
    newUrl = (forceHttps ? "https" : originalUri.Scheme) + 
     "://" + originalUri.Authority + newUrl; 
    return newUrl; 
} 

अब यह विधि पूर्ण पूर्ण यूआरएल वापस कर देगी।

ResolveServerUrl(VirtualPathUtility.ToAbsolute("~/images/image1.gif"),false)) 

उत्पादन http://www.yourdomainname.com/images/image1.gif

+2

ऊपर कोड रिटर्न "/"। बस। Http: // www.mywebsite/ –

+0

जैसे प्रोटोकॉल के साथ डोमेन नाम नहीं है मैंने जवाब अपडेट किया है। अब यह आवश्यकता को पूरा करेगा – Adeel

+0

हां, धन्यवाद। संदर्भ: http://www.west-wind.com/Weblog/posts/154812.aspx –

-6

कोशिश इस प्रयोग के लिए किया जाएगा।

Url.Action("~/images/image1.gif", "/", null, Request.Url.Scheme) 
+2

ओपी ने इस सटीक समाधान से जुड़े समस्याओं के बारे में बात की। इस सवाल का सही जवाब 3 साल पहले पूछे जाने के 2 घंटे बाद दिया गया था ... – OGHaza

56
new Uri(Request.Url, Url.Content("~/images/image1.gif")) 
+1

मुझे यकीन नहीं है कि सबसे प्रभावी तरीका कौन सा है, लेकिन मुझे इसका उपयोग करने और याद रखने का सबसे आसान तरीका मिल गया है। –

+3

यह जवाब होना चाहिए !! यह नेट द्वारा डिफ़ॉल्ट रूप से सरल और किया जाता है, इसलिए यह flexibiity और रखरखाव पर सबसे अच्छा है –

+0

यह सुंदर है लेकिन यह मेरे लिए काम नहीं करता .. मुझे अभी भी 'मुख्य/छवियों/load.png' जैसे कुछ डोमेन गुम है। – fiberOptics

संबंधित मुद्दे