2009-06-04 10 views
6

मैंने एक डिफ़ॉल्ट एएसपीनेट एमवीसी प्रोजेक्ट बनाया है। मास्टर पेज में मैं शीर्षएएसपीनेट एमवीसी में जेएस फाइलों को कैसे शामिल करें और सभी मार्गों पर एक वैध पथ

पर निम्न है
<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 

मैं तो, किसी JavaScript फ़ाइल जोड़ने की जरूरत के रूप में पेज का हल अन्वेषक से फ़ाइल को खींचकर इस प्रकार लाइन कहा:

<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
</head> 

जब मुझे किसी साइट का उपयोग और ब्राउज़र से एचटीएमएल देखो मैं इस देखें:

<head><title> 

    Index 

</title><link href="Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
</head> 

सीएसएस फ़ाइल रिश्तेदार पथ तय किया गया था लेकिन जे एस फ़ाइल नहीं। साइट को मेरे विकास बॉक्स पर प्राप्त रूट की तुलना में सर्वर पर एक अलग फ़ोल्डर में तैनात किया जाएगा।

क्या ऐसा करने का कोई उचित तरीका है?

उत्तर

16

उपयोग यूआरएल हेल्पर:

<script type="text/javascript" src="<%=Url.Content("~/Content/script/MyFile.js")%>"></script> 

आशा है कि मदद करता है

+0

यह साइट को उपनिर्देशिका में स्थापित करने के साथ समस्या को हल करता है क्योंकि साइट को रूट की पथ के साथ बदल दिया गया है। लेकिन समस्या यह है कि जब मैं रूट पर जाता हूं तो जेएस फ़ाइल रूट के नीचे स्क्रिप्ट फ़ोल्डर में होती है और नहीं ../../Scripts बनी हुई है। चूंकि एमवीसी अलग-अलग उपफोल्डर्स तक पहुंच जाएगा, इसलिए स्क्रिप्ट सभी मार्गों से हमेशा उपलब्ध नहीं है। मैंने आपको +1 दिया है क्योंकि कम से कम अब मुझे रूट के सापेक्ष पथों को हार्डकोड करने का कोई तरीका है। लेकिन मैं यह देखने के लिए इंतजार करूंगा कि कोई यह बता सकता है कि यह सीएसएस के लिए बॉक्स के बाहर क्यों काम करता है और जेएस के लिए नहीं। – jvanderh

+0

मुझे लगता है कि यह मुद्दा सीएसएस बनाम जावास्क्रिप्ट नहीं है, लेकिन आपके पास बस आपके कॉन्स फ़ोल्डर के अंदर आपका सीएसएस है और आपकी स्क्रिप्ट – Lewis

7

आप एक सहायक विधि है कि कुछ इस तरह करता है बना सकते हैं:

<%= Helper.IncludeJavascriptFile("Menu.js") %> 

और फिर उस सहायक में आप कुछ करना जैसे:

public string IncludeJavascriptFile(string fileName){ 
    return Url.Content("<root>/Javascript/Files/" + fileName); 
} 

फिर आप अपने विचार से उस सहायक विधि को कॉल कर सकते हैं। यदि आप फ़ाइलों का स्थान बदलने का निर्णय लेते हैं, तो यह केवल एक ही स्थान पर है जिसके बारे में आपको चिंता करना है। यदि आप फ़ाइलों का नाम बदलते हैं, तो यह स्वयं में और एक अलग समस्या है।

+1

+1 मैनेटेनिटी के लिए नहीं है। – jvanderh

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