2017-01-20 25 views
-2

私はしばらくこれに取り掛かっています。 jqueryバージョン2.2.3をロードするレイアウトページがあります。そして、私はいくつかのdivの(情報ボックスの並べ替え)私はjqgridを持つ部分的なビューを読み込むことがあります。 Jqgridにはjqueryライブラリが必要です。部分ビューにはレイアウトがないため、すべてのスクリプトをロードする必要があるため、部分ビューにもjqueryライブラリがあります。しかし、問題は、Webページの2つのjqueryライブラリがロードされ、レイアウトからのものと部分ビューからのものが混在していることです。これは競合する動作につながります。サイドバーメニューにはアコーディオンのようなメニューがあり、見出しをクリックするとサブメニューが開きます。これは2つのjqueryライブラリのため正しく動作しません。部分的なビューがない他のWebページでは、サイドバーメニューは正常に機能します。私はこの問題のために回避策を見つけることができれば嬉しいです。は、部分ビューのjqueryとasp.net mvcのレイアウトページを含みます

ご質問がある場合は教えてください。私には関節音が問題になることがあります。すべての入力をありがとう。

ダウンリストされた理由はわかりません。 downvoteしたい場合は、それを破棄する前に私もいくつかの入力を与えるかもしれません。コードスニペットを含め

-

レイアウトページ:

<head> 

    <script src="~/jQuery/jquery-2.2.3.min.js"></script> 
<!-- Bootstrap 3.3.6 --> 
<script src="~/Scripts/bootstrap.min.js"></script> 
<script src="~/Scripts/jquery.validate.min.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script> 
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 

    </head> 

パーシャルビュー:私は、ビューのだdivの中にロードします。

ビューをポストしていない、部分的なビューのコードスニペットを入れるだけです。

<script src="~/scripts/jquery-2.2.4.js"></script> 
    <script src="~/Scripts/free-jqGrid/i18n/grid.locale-en.js"></script> 
    <script src="~/Scripts/free-jqGrid/jquery.jqgrid.min.js"></script> 

    <link href="~/Content/themes/base/jquery.ui.theme.css" rel="stylesheet" /> 
    @*<link href="~/Content/jquery.custom/jquery-ui-1.12.1.custom-jquery-ui.css" rel="stylesheet" />*@ 
    <link href="~/Content/ui.jqgrid.min.css" rel="stylesheet" /> 

    <script src="~/Scripts/jqgridinternalapproved.js"></script> 

jqgridinternalapproved.jsをロードするにはjqueryライブラリが必要です。しかし、これは2つのjqueryライブラリにつながります!それを修正するために何をすべきかわからない。

+0

部分的にはスクリプト(またはスタイルシート)を含まないようにする必要があります。レイアウトやメインビューでのみそれらを含める –

答えて

0

部分ビューでは、jQueryの依存関係が既に提供されていることを前提としています。グローバルライブラリをレイアウトに含める必要があります。部分的なビューを独自にロードしようとしていて、依然としてjQueryのサポートが必要な問題がある場合は、それをやってはいけません。部分的なビューはブラウザ内のページ全体としては読み込まれません。彼らは完全なビューの中でレンダリングするか、AJAX経由で完全な既存のHTMLページにドロップする必要があります。ロードしたい部分だけをブラウザーのビュー全体の部分表示部分にするだけで、パーシャルビューが利用でき、jQueryがすでに含まれているより単純な基本レイアウトを作成するだけです。例えば:

_BaseLayout.cshtml

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>@ViewBag.Title</title> 
     @RenderSection("Meta", required: false) 
     @RenderSection("Styles", required: false) 
    </head> 
    <body> 
     @RenderBody() 
     @Script.Render("~/bundles/jquery") 
     @RenderSection("Scripts", required: false) 
    </body> 
</html> 

_Layout.cshtml

@{ Layout = "~/Views/Shared/_BaseLayout.cshtml"; } 

<!-- remainder of your layout HTML here (i.e. stuff within <body></body>) --> 

@section Meta 
{ 
    <!-- additional global meta for layout here --> 
    @RenderSection("Meta", required: false) 
} 

@section Styles 
{ 
    <!-- additional global styles for layout here --> 
    @RenderSection("Styles", required: false) 
} 

@section Scripts 
{ 
    <!-- additional global scripts for layout here --> 
    @RenderSection("Scripts", required: false) 
} 

これは本質的にレイアウトを拡張されています。あなたの主なレイアウトファイルは、それ自身のレイアウトを使用し、ビューと同じように追加のコードを追加します。レイアウトは特殊なビューに過ぎないため、これは機能します。これらのレイアウトを利用するビューでセクションを利用できるようにするには、セクションを各レイアウトで再定義する必要があります。

これで、以前に部分ビューを独自のものに戻したい場合は、その代わりに_BaseLayout.cshtmlを使用するビューを返し、その部分をレンダリングします。そうすれば、通常のレイアウトからすべてのものを取り込むことなく、jQueryの依存関係と完全な完全なHTMLドキュメントが得られます。

関連する問題