2012-11-27 20 views
6

我正在與jqgrid的ASPNET MVC 4項目。在ASPNET MVC 4應用程序JQuery腳本命令

有,ASPNET MVC 4看跌默認

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

在_Layout.cshtml文件在它的結束。

現在,我有一個使用的jqGrid像

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

一個Index.cshtml所以我必須包括像

@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是什麼。

我不能把jqquery腳本和jqgrid腳本放在_Layout.cshtml文件的底部,因爲上面是使用jqgrid腳本的Index.cshtml文件內容。

有沒有什麼我失蹤,爲了能夠把jQuery的結束,仍然能夠在視圖中使用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...