2010-12-31 17 views
15

मैं एएसपी.नेट सापेक्ष पथ से उलझन में हूं, कृपया कोई मदद कर सकता है?एएसपी.नेट सापेक्ष पथ

एक मास्टर पृष्ठ मैं एक लिंक लेबल संदर्भित दिया में:

<a href="~/Account/Login.aspx">Login</a> 

ASP.NET आधिकारिक दस्तावेज से मैंने पढ़ा:

निम्न उदाहरण एक root- निर्दिष्ट करने के लिए प्रयोग किया जाता है ~ ऑपरेटर से पता चलता छवि सर्वर नियंत्रण का उपयोग करते समय एक छवि के लिए सापेक्ष पथ इस उदाहरण में, छवि फ़ाइल को वेब साइट की रूट के नीचे स्थित छवि फ़ोल्डर से पढ़ा जाता है, चाहे वेबसाइट पर स्थित वेबसाइट कहां स्थित है।

/Account/~/Account/Login.aspx 

क्यों:

<asp:image runat="server" id="Image1" ImageUrl="~/Images/SampleImage.jpg" />

लॉग इन मार्कअप के साथ

, जब मैं/खाता फ़ोल्डर में एक पृष्ठ से लिंक पर क्लिक करें, मैं पर पुनः निर्देशित कर रहा हूँ? क्यों? एच

उत्तर

27

क्योंकि आप इसे सीधे सर्वर नियंत्रण के बजाय मार्कअप में उपयोग कर रहे हैं। इस के रूप में सरल कुछ इसे ठीक करना चाहिए:

<a runat="server" href="~/Account/Login.aspx">Login</a> 

असल में, ~ पथ संदर्भ, सर्वर पर अनुवाद करने की आवश्यकता के बाद से यह आवेदन के आधार निर्देशिका के सर्वर पथ के लिए एक संदर्भ है। सादा एचटीएमएल मार्कअप सर्वर पर संसाधित नहीं है, यह सिर्फ ग्राहक के रूप में वितरित किया गया है। केवल सर्वर-संसाधित कोड ~ पथ का अनुवाद करने के लिए पथ का अनुवाद करेगा।

+7

या: ">Login आप एक ही परिणाम देना चाहिए। –

+0

यूप, यह भी ऐसा करेगा। जैसा कि '' नियंत्रण का उपयोग करेगा। डेवलपर क्या उपयोग करना चाहता है इसके आधार पर कई अलग-अलग दृष्टिकोण हैं। – David

+0

धन्यवाद डेविड और जेमी। आप दोनों को नया साल मुबारक हो। –

0

आप ASP.NET सर्वर नियंत्रणों के अंदर URL को संदर्भित करते समय ~ का उपयोग कर सकते हैं। आप इसे <a> टैग में उपयोग कर रहे हैं जो कि केवल सादा HTML है जो ~ के बारे में कुछ भी नहीं जानता है। का उपयोग ' "/Images/SampleImage.jpg"' के बजाय

+1

मुझे पृष्ठ में रूट "/" का उपयोग करने के बारे में क्या पसंद नहीं है यह है कि यह आपके पर्यावरण के आधार पर अलग हो सकता है।उदाहरण के लिए, यदि आपका ऐप XP में आपके dev वातावरण में वर्चुअल निर्देशिका में है, और Server03 में उत्पादन सर्वर पर वेब रूट पर, तो आपको अलग-अलग परिणाम मिलेंगे। –

+1

"/Images/SampleImage.jpg" हालांकि, एक सापेक्ष पथ नहीं है। यह दृष्टिकोण केवल तभी काम करेगा जब एप्लिकेशन का बेस पथ सर्वर रूट से मेल खाता हो। हालांकि यह अक्सर मामला है, इसकी गारंटी नहीं है, और तथ्य के मुताबिक नहीं पूछा गया था। – David

+0

आप सही हैं। हालांकि यह मेरा आसान जवाब था। किसी और ने ResolveClientUrl पोस्ट किया है जो बेहतर काम करेगा। –

1

उपयोग इस आदेश

<a href="<%=Page.ResolveUrl("~/product.aspx")%>" >Link To Products</a> 
संबंधित मुद्दे