2010-08-02 7 views
16

मेरे पास एक एएसपी.नेट एमवीसी पेज है, जहां मैं दोस्ताना यूआरएल दिखाने की कोशिश कर रहा हूं।एएसपी एमवीसी फ्रेंडली यूआरएल और सापेक्ष पथ छवियां

तो, मेरे पास होम कंट्रोलर में एक श्रेणी दृश्य है, जो पृष्ठ की सामग्री प्राप्त करने के लिए एक श्रेणी कुंजी मान स्वीकार करता है।

उदाहरण के लिए: http://localhost/Home/Category/Bikes बाइक सामग्री प्राप्त करता है।

मेरी Global.asax.cs में, मैं इस संभाल करने के लिए निम्नलिखित है:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Category", 
     "{controller}/{action}/{categoryKey}", 
     new { controller = "Home", action = "Category", categoryKey = "" }); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 
} 

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

<img src="../AdminUploadContent/bikes.gif" alt="Bikes" /> 

, अगर मैं गोटो "http://localhost/Home/Category", और कहा कि छवि टैग आधार पृष्ठ पर है, यह ऊपर खींच लेंगे छवि। हालांकि, अगर मुझे "http://localhost/Home/Category/" मिल गया है, या "/ होम/श्रेणी/बाइक" की वास्तविक श्रेणी जोड़ें, तो छवि दिखाई नहीं दे रही है। छवि के गुण "http://localhost/Home/AdminUploadContent/bikes.gif" पर इंगित कर रहे हैं।

क्या कोई भी चीज़ है जो मैं अपने global.aspx.cs फ़ाइल में सापेक्ष पथ को संभालने के लिए रख सकता हूं? यहां तक ​​कि यदि मैं सामग्री प्रबंधन को मैन्युअल रूप से संपादित करने के लिए संपादित करता हूं ../../AdminUploadContent/bikes.gif, यह पहले ../ को बंद कर रहा है, क्योंकि यह कुछ सत्यापन कर रहा है।

उत्तर

2

आप वर्तमान वर्चुअल निर्देशिका को संदर्भित करने के लिए सापेक्ष पथ "~ /" का उपयोग कर सकते हैं जहां पृष्ठ स्थित है। "Src" विशेषता में अपने "img" टैग और "~" पर हस्ताक्षर करने के लिए runat = "सर्वर" विशेषता जोड़ने के लिए प्रयास करें:

<img runat="server" src="~/AdminUploadContent/bikes.gif" alt="Bikes" /> 
+4

मैं asp.net mvc के साथ asp.net वेबफॉर्म idiom मिश्रण करने की अनुशंसा नहीं करता। इस मामले में

Bikes
Roman

35

जब अपनी छवि के लिए एक रास्ता पैदा Url.Content विधि का उपयोग करें।

<img src="<%= Url.Content("~/AdminUploadContent/bikes.gif") %>" /> 
+0

रनैट = "सर्वर" की आवश्यकता नहीं है, मुझे लगता है कि –

+0

आप सही हैं। ठीक कर दिया। – marcind

+0

@marcind, नमस्ते, मैं डेटाबेस में Imagepath को सहेज रहा हूं: 'c: // user/tom/images', मैं इसे देखने में सक्षम नहीं हूं, क्यों? – stom

0

आप एक कस्टम http मॉड्यूल Referer से निपटने की जरूरत के सापेक्ष ../../img.png से पथ को फिर से लिखने होगा लागू कर सकते हैं:

<img src="@Url.Content("~/AdminUploadContent/bikes.gif")" /> 

या WebForms का उपयोग कर यदि इंजन देखने उदाहरण के लिए, http शीर्षलेख।

0

यह भी काम करता है।

<img src="@Url.Content("~/Images/yourimage.png")"/> 
संबंधित मुद्दे