2010-12-30 11 views
10

कहाँ ASP.NET आभासी पथ, लिंक में टिल्ड ~ को हल करता है उदाहरण केएएसपी.नेट वर्चुअल पथ कहां टिल्ड को हल करता है?

<link rel="stylesheet" type="text/css" href="~/Css/Site.css" /> 

यह रीडायरेक्ट करता है के लिए, या ASP.NET MVC में RedirectToAction?

+1

आपका प्रश्न कोई समझ नहीं आता है। शायद आपको इसे फिर से प्रारूपित करने की आवश्यकता है। –

उत्तर

18

यह यहां से हो जाता है:

VirtualPathUtility.ToAbsolute(contentPath, httpContext.Request.ApplicationPath); 

यहाँ System.Web.Mvc DLL में PathHelpers वर्ग के लिए परावर्तक उत्पादन होता है:

private static string GenerateClientUrlInternal(HttpContextBase httpContext, string contentPath) 
{ 
    if (string.IsNullOrEmpty(contentPath)) 
    { 
     return contentPath; 
    } 
    if (contentPath[0] == '~') 
    { 
     string virtualPath = VirtualPathUtility.ToAbsolute(contentPath, httpContext.Request.ApplicationPath); 
     string str2 = httpContext.Response.ApplyAppPathModifier(virtualPath); 
     return GenerateClientUrlInternal(httpContext, str2); 
    } 
    NameValueCollection serverVariables = httpContext.Request.ServerVariables; 
    if ((serverVariables == null) || (serverVariables["HTTP_X_ORIGINAL_URL"] == null)) 
    { 
     return contentPath; 
    } 
    string relativePath = MakeRelative(httpContext.Request.Path, contentPath); 
    return MakeAbsolute(httpContext.Request.RawUrl, relativePath); 
} 
+0

मेरा प्रश्न इस समस्या पर आधारित है "लिंक देखने के लिए http://stackoverflow.com/questions/4563043/root-path-with-tilde-does-not-change-upper-case-to-lower-case" http://msdn.microsoft.com/en-us/library/system.web.virtualpathutility.aspx ", मुझे लगता है कि समस्या asp.net-mvc में नहीं है, लेकिन आईआईएस में है। धन्यवाद –

1

ASP.Net टिल्ड तब्दील (~) प्रत्येक रनैट = सर्वर नियंत्रण में एप्लिकेशन की मूल निर्देशिका के साथ। यह HttpRuntime.AppDomainAppVirtualPath संपत्ति के बराबर है।

+0

नहीं, यह बराबर नहीं है। AppDomainAppVirtualPath "निर्देशिका का आभासी पथ है जिसमें वर्तमान अनुप्रयोग डोमेन में होस्ट किया गया अनुप्रयोग है" (वर्चुअल निर्देशिका)। यह निश्चित रूप से आईआईएस 7 से, एप्लिकेशन की मूल निर्देशिका के साथ समान नहीं है। –

2

MSDN:Web Project Paths

ASP.NET वेब आवेदन जड़ ऑपरेटर (~), जो आप उपयोग कर सकते हैं जब सर्वर में नियंत्रण एक पथ निर्दिष्ट शामिल देखें। एएसपी.नेट वर्तमान एप्लिकेशन की रूट पर ~ ऑपरेटर को हल करता है। वर्तमान रूट पर आधारित पथ निर्दिष्ट करने के लिए आप फ़ोल्डर्स के संयोजन के साथ ~ ऑपरेटर का उपयोग कर सकते हैं।

असल में, टिल्डे का उद्देश्य यह है कि यदि आप अपनी वेबसाइट को विभिन्न स्थानों पर तैनात करते हैं तो भी आपके पास एक रास्ता हो सकता है जो ठीक से हल हो सकता है। सापेक्ष पथ इसे आसानी से पूरा नहीं कर सकते हैं क्योंकि नियंत्रण आपकी वेबसाइट के भीतर विभिन्न फ़ोल्डर्स में प्रस्तुत किया जा सकता है। पूर्ण पथ इसे पूरा नहीं कर सकते हैं क्योंकि आपकी वेबसाइट अलग-अलग स्थानों पर तैनात की जा सकती है - यदि कुछ और नहीं है, तो यह लाइव सर्वर पर स्थानीय रूप से बनाम रिलीज परिनियोजन किए गए परीक्षण तैनाती का मामला है।

Server.MapPath इसी कारण से उपयोग किया जा सकता है।

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