2012-11-27 4 views
6

jqgridを使用したASPNET MVC 4プロジェクトで作業しています。それの終わりに_Layout.cshtmlファイルのデフォルトASPNET MVC 4アプリケーションのJqueryスクリプトの注文

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

ことであり

、ASPNET MVC 4プット。

さて、私はだから私は

@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スクリプトがロードされているが必要

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

ようjqgrid使用Index.cshtmlを持っていますjqueryスクリプトをロードする必要があります。したがって、jQueryスクリプトは、_Layout.cshtmlファイルの末尾ではなく、一番上にある必要があります。

ベストプラクティスによれば、jqueryスクリプトはファイルの最後にロードする必要がありますが、そうすると、Index.cshtmlファイルではjQueryの内容がわかりません。

上記の理由から、jqgeryスクリプトを使用するIndex.cshtmlファイルのコンテンツは、_Layout.cshtmlファイルの末尾にjqqueryスクリプトとjqgridスクリプトを置くことはできません。

最後に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-hostedインスタンスの属性に設定すると、スクリプトがクライアントに既にキャッシュされている可能性が高くなります。

Here is a nice reference...

関連する問題