8

jqgrid を使用して ASPNET MVC 4 プロジェクトに取り組んでいます。

そこで、ASPNET MVC 4 はデフォルトで

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

_Layout.cshtml ファイルの最後にあります。

今、私は jqgrid のように使用する 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 スクリプトをロードする必要があります。これには、jquery スクリプトをロードする必要があります。したがって、jquery スクリプトは、_Layout.cshtml ファイルの最後ではなく先頭にある必要があります。

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

_Layout.cshtml ファイルの下部に jqquery スクリプトと以下の jqgrid スクリプトを配置することはできません。これは、jqgrid スクリプトを使用する Index.cshtml ファイルのコンテンツであるためです。

最後にjQueryを配置し、ビューでjqueryを使用して何かを使用できるようにするために、私が欠けているものはありますか?

ありがとう!ギレルモ。

4

2 に答える 2

15

__Layout.cshtml:

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

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

インデックス.cshtml:

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

ただし、ベスト プラクティスは、次のように、コードに別の JavaScript ファイルを用意することです。

__Layout.cshtml:

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

インデックス.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({ ... });

});
于 2012-11-27T15:10:27.310 に答える
2

私もこの問題に遭遇しました。jQuery自体をバンドルしないのは直感に反しているように見えますが、それを実行する必要があります。jQueryスクリプト参照をヘッダーにスローします。jQueryスクリプトのsrc属性を縮小されたgoogle-hostedインスタンスの属性に設定すると、スクリプトがクライアントにすでにキャッシュされている可能性が高くなります。

ここに素晴らしいリファレンスがあります...

于 2012-11-27T13:59:14.887 に答える