2015-10-30 4 views
5

हालांकि बंडलिंग वीएस की एक साफ विशेषता है, कभी-कभी मैं किसी विशेष पृष्ठ पर एक स्क्रिप्ट या सीएसएस उपलब्ध होना चाहता हूं। इस तरह, मैं यह सुनिश्चित कर सकता हूं कि नाम विवाद और/या ओवरराइड से बचा जाएगा।क्या प्रति पृष्ठ स्क्रिप्ट और शैलियों को बंडल करना संभव है

क्या फाइलों को बंडल करना संभव है ताकि केवल वैश्विक और पेज विशिष्ट फाइलें उपलब्ध हों?

तो उदाहरण के लिए, मेरे पास Cabinet.cshtml नामक एक पृष्ठ है। और मेरे पास Cabinet.js और Cabinet.css फ़ाइलें भी हैं। दूसरी ओर मेरे पास AdminPanle.cshtml नामक एक और पृष्ठ है, जिसमें admin.js और admin.css फ़ाइलें हैं।

अब, मैं इन दो विचारों को केवल अपनी संबंधित फ़ाइलों और jQuery और jQuery UI तक पहुंच प्राप्त करना चाहता हूं। तो jQuery वैश्विक होना चाहिए।

+1

तुम हमेशा अपने स्वयं के बंडल बना सकते हैं - 'नई ScriptBundle (" ~/बंडल/कैबिनेट ")' आदि जिसमें 'jquery',' jquery-ui' और 'कैबिनेट' शामिल है और आपके दृश्य में '@ स्क्रिप्ट्स। रेंडर (" ~/बंडल/कैबिनेट ") शामिल हैं। या केवल 'कैबिनेट' के साथ बंडल बनाएं और अपने लेआउट में मुख्य बंडल और अपने पृष्ठ –

+0

में विशिष्ट बंडल है, यह बहुत अच्छा है। केवल @ कैबिनेट.cshtml फ़ाइल में '@ स्क्रिप्ट्स। रेंडर (" ~/बंडल/कैबिनेट ") होने से समस्या हल हो जाएगी। धन्यवाद स्टीफन। –

उत्तर

12

तो समस्या क्या है? में प्राथमिक रूप से आपका BundleConfig.cs आपके पास:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/jqueryui") 

और बनाने के 4 अन्य बंडलों:

//scripts 
bundles.Add(new ScriptBundle("~/bundles/cabinet").Include(
        "~/Scripts/Cabinet.js")); 
bundles.Add(new ScriptBundle("~/bundles/admin").Include(
        "~/Scripts/admin.js")); 
//styles 
bundles.Add(new StyleBundle("~/Content/cabinet").Include("~/Content/Cabinet.css")); 
bundles.Add(new StyleBundle("~/Content/admin").Include("~/Content/admin.css")); 

अब आप को अलग कर सकते

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
        "~/Scripts/jquery-ui-{version}.js")); 

तो अपने _Layout.cshtml के अपने दिमाग में इस बंडल रख सकते थीस स्क्रिप्ट और शैलियों और उन्हें केवल उस पृष्ठ पर जोड़ें जो आपको चाहिए।

मुझे लगता है कि में head टैग में 2 अनुभागों को परिभाषित करना अच्छा है।

<head> 
    //other scripts and styles here 
    @RenderSection("scriptslib", required: false) 
    @RenderSection("csslib", required: false) 
</head> 

तो अब अपने दृश्य में (Cabinet.cshtml और AdminPanle.cshtml) जहाँ वे इस तरह होने के लिए मान लीजिए कि आप अपने libs जगह कर सकते हैं:

@section scriptslib{ 
    @Scripts.Render("~/bundles/cabinet") 
    } 
+0

जो मैं खो रहा था वह था कि मैं भूल गया था कि मैं उन्हें विशेष पृष्ठों में अलग से प्रस्तुत कर सकता हूं। –

+0

मैं पूरी तरह से रेंडरसेक्शन के बारे में भूल गया! जबरदस्त हंसी – zerohero

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

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