2017-01-20 61 views
-2

我一直堅持這一段時間。我有一個加載jQuery版本2.2.3的佈局頁面。我有一些div(信息框排序),我加載了一個有jqgrid的局部視圖。 Jqgrid需要jQuery庫,所以我在我的局部視圖中也有jquery庫,因爲局部視圖沒有佈局,所以我需要加載所有腳本。但問題是,在網頁2中加載jquery庫,一個來自佈局,另一個來自局部視圖,這導致行爲衝突。側邊欄菜單有類似菜單的手風琴,點擊標題後會打開一個子菜單。由於有兩個jquery庫,這不能正常工作。在沒有部分視圖的其他網頁中,側邊欄菜單工作得很好。我希望能找到解決這個問題的方法。包括在部分視圖和asp.net中的佈局頁面的jquery mvc

請讓我知道是否有任何問題,有時清晰可能是我的問題。感謝您的任何意見。

不知道爲什麼它被低估。如果你想降低它的話,你最好在丟棄它之前給我一些輸入。

包括代碼片段 -

佈局頁:

<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文檔,而不需要包含你正常佈局的所有東西。

相關問題