2012-11-27 14 views
6

jqgrid ile bir ASPNET MVC 4 projesinde çalışıyorum. Ucunda _Layout.cshtml dosyasında varsayılanASPNET MVC 4 uygulamasında JQuery komut dosyaları sırası

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

tarafından Orada

ASPNET MVC 4 koyar.

Şimdi,

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

gibi jqGrid kullanan bir Index.cshtml yüzden

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

gibi jqGrid komut dosyalarını eklemeniz gerekir var Ama gerek .jqgrid ile bir şey kullanmadan önce jqGrid komut dosyaları yüklenmiş olan sırayla, jquery betikleri yüklenir, dolayısıyla jquery betikleri _Layout.cshtml dosyasında en sonunda yerine getirilmelidir.

En iyi uygulamalara göre jQuery komut dosyaları dosyanın sonuna yüklenmelidir, ancak bunu yaparsam, Index.cshtml dosyasında jQuery'nin ne olduğunu bilmez.

jqquery komut dosyalarını ve jqgrid komutlarının altına _Layout.cshtml dosyasının alt kısmına, jqgrid komut dosyalarını kullanan Index.cshtml dosya içeriği olduğu için koyamıyorum.

JQuery'yi sonlandırmak için hala eksik olan bir şey var ve hala görünümde jquery ile bir şeyleri kullanabiliyor muyum?

Teşekkürler! Guillermo.

cevap

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

Ama en iyi uygulama böyle Kodunuzla ilgili ayrı bir javascript dosyası var olacaktır:

__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

Bu sorunla da karşılaştım. JQuery'yi paketlememenin tersine sezgisel gibi görünüyor, ama yapılması gereken şey bu. Başlıkta bir jQuery komut dosyası referansı atın. JQuery komut dosyası src özelliğinizi, küçültülmüş google tarafından barındırılan örneğe ayarladıysanız, komut dosyasının zaten istemcide zaten önbelleğe alınmış olması ihtimali yüksektir.

Here is a nice reference...