2012-11-27 13 views
6

मैं jqgrid के साथ एक एएसपीएनईटी एमवीसी 4 प्रोजेक्ट पर काम कर रहा हूं। यह के अंत में _Layout.cshtml फ़ाइल में डिफ़ॉल्टएएसपीएनईटी एमवीसी 4 अनुप्रयोग में jQuery स्क्रिप्ट ऑर्डर

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

द्वारा

वहाँ, ASPNET MVC 4 डालता है।

अब, मैं एक Index.cshtml जो की तरह

<script type="text/javascript"> 
    jQuery("#ajaxGrid").jqGrid({ 

jqgrid का उपयोग करता है तो मैं

@section jqgridScripts 
{ 
    <script src="@Url.Content("~/Scripts/jqgrid/i18n/grid.locale-en.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jqgrid/js/jquery.jqGrid.min.js")" type="text/javascript"></script> 
} 

तरह jqgrid स्क्रिप्ट को शामिल करना चाहिए है लेकिन .jqgrid के साथ कुछ भी उपयोग करने से पहले मैं की जरूरत है jqgrid लिपियों भरी हुई जो बदले में jquery स्क्रिप्ट लोड की जरूरत है, इस प्रकार, jQuery स्क्रिप्ट को _Layout.cshtml फ़ाइल के अंत में शीर्ष पर होना चाहिए।

सर्वोत्तम प्रथाओं के अनुसार फ़ाइल के अंत में jquery स्क्रिप्ट को लोड करने की आवश्यकता है, लेकिन यदि मैं ऐसा करता हूं, तो index.cshtml फ़ाइल में यह नहीं जानता कि jQuery क्या है।

मैं ऊपर से _Layout.cshtml फ़ाइल के नीचे jqquery स्क्रिप्ट्स और नीचे jqgrid स्क्रिप्ट नहीं डाल सकता क्योंकि यह index.cshtml फ़ाइल सामग्री है जो jqgrid स्क्रिप्ट का उपयोग करता है।

क्या ऐसा कुछ है जो मुझे गायब होने में सक्षम होने के लिए याद आ रहा है और अभी भी दृश्य में jquery के साथ कुछ उपयोग करने में सक्षम है?

धन्यवाद! गिलर्मो।

उत्तर

13

__Layout.cshtml:

@Scripts.Render("~/bundles/jquery") 
@RenderSection("jqgridScripts", required: false); 

@* for script in current page *@ 
@RenderSection("pageScripts", required: false); 

Index.cshtml:

@section pageScripts 
{ 
<script type="text/javascript"> 
    jQuery("#ajaxGrid").jqGrid({ 
    ... 
</script> 
} 

लेकिन सबसे अच्छा अभ्यास इस तरह, अपने कोड के साथ एक अलग JavaScript फ़ाइल के लिए होगा:

__Layout.cshtml:

@Scripts.Render("~/bundles/jquery") 
@RenderSection("pageScripts", required: false); 

Index.cshtml:

@section pageScripts 
{ 
    <script src="@Url.Content("~/Scripts/jqgrid/i18n/grid.locale-en.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jqgrid/js/jquery.jqGrid.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/Site/myscript.js")" type="text/javascript"></script> 
} 

myscript.js:

$(function() { 

    jQuery("#ajaxGrid").jqGrid({ ... }); 

}); 
2

मुझे इस मुद्दे का भी सामना करना पड़ा है। ऐसा लगता है कि jQuery स्वयं को बंडल नहीं करने के लिए काउंटर-अंतर्ज्ञानी लगता है, लेकिन यह किया जाना चाहिए। हेडर में एक jQuery स्क्रिप्ट संदर्भ फेंको। यदि आप अपनी jQuery स्क्रिप्ट src विशेषता को छोटा Google- होस्टेड इंस्टेंस में सेट करते हैं, तो उच्च संभावना है कि स्क्रिप्ट पहले से ही आपके क्लाइंट में कैश की गई है।

Here is a nice reference...

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