2012-11-27 7 views
6

Pracuję nad projektem ASPNET MVC 4 z jqgrid.Kolejność skryptów jquery w aplikacji ASPNET MVC 4

Tam ASPNET MVC 4 umieszcza domyślnie

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

w pliku _Layout.cshtml na koniec.

Teraz mam Index.cshtml który wykorzystuje jqGrid jak

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

Więc muszę to skrypty jqGrid jak

@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> 
} 

Ale przed użyciem coś z .jqgrid muszę skrypty jqGrid który załadowany z kolei wymaga załadowania skryptów jquery, dlatego skrypty jquery muszą znajdować się na górze, a nie na końcu w pliku _Layout.cshtml.

Zgodnie z najlepszymi praktykami skrypty jquery muszą być załadowane na końcu pliku, ale jeśli to zrobię, w pliku Index.cshtml nie wiadomo, jQuery jest.

Nie mogę umieścić skryptów jqquery i poniżej skryptów jqgrid na dole pliku _Layout.cshtml, ponieważ powyżej jest zawartość pliku Index.cshtml, która używa skryptów jqgrid.

Czy jest coś, czego mi brakuje, aby móc umieścić jQuery na końcu i nadal móc używać czegoś z jquery w widoku?

Dzięki! Guillermo.

Odpowiedz

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> 
} 

Ale najlepszą praktyką byłoby mieć oddzielny plik JavaScript z kodu, takich jak to:

__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

Napotkałem również ten problem. Wygląda na to, że nie jest w stanie spakować samej jQuery, ale trzeba to zrobić. W nagłówku umieść odniesienie do skryptu jQuery. Jeśli ustawisz atrybut src skryptu jQuery na minified instancji hostowanej przez google, istnieje duże prawdopodobieństwo, że skrypt jest już buforowany w twoim kliencie.

Here is a nice reference...

Powiązane problemy