2012-04-19 91 views
4

我對jquery在我的項目中遇到的一個小問題感到困惑。該項目是Visual Studio 11中的MVC4網站。jquery不包含在捆綁中

問題是jQuery未包含在捆綁中,而且它在我更新到1.7.2之前似乎一直在工作,但無法確定。

我可以在捆綁文件的頂部看到jQuery文件的註釋,但無法找到它的任何代碼。其他所有文件似乎都包含在內(我自己的腳本和jquery ui文件)。

我已經嘗試過濾器並創建自己的包,但似乎沒有任何工作。

我真的很感謝任何幫助,因爲當頁面加載時,所有java腳本只是因爲沒有找到函數而崩潰。如果我只是通常包含java腳本文件,這是行不通的。

編輯:

的Global.asax:

protected void Application_Start() 
{ 
    BundleTable.Bundles.EnableDefaultBundles(); 
} 

_Layout.cshtml:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script> 

更新1:

我添加了一些代碼jQuery的FIL e,捆綁文件包含在頂部。

function Test(){ } 

然後改成這個,這段代碼就沒有了。

(function Test(){ }) 

奇怪的是,其他jQuery文件,如UI的不會被刪除,他們是相同的方式。

編輯:看起來這是爲了

更新2:

測試了一些,發現打破,如果我包括我的自定義捆綁任何文件的文件,它打破

  • jquery.validate.js
  • jquery.validate.unobtrusive.js
  • jQuery的。不顯眼,ajax.min.js

在他們之前,我有這些,他們沒有任何錯誤

  • jQuery的1.7.2.min.js
  • jQuery的UI,19年1月8日工作.min.js
  • bootstrap.min.js

它仍然是奇怪的,如果我有這些文件作爲正常的腳本<script src="~/Scripts/jquery.validate.js"></script>,他們應該他們的工作,沒有錯誤。

不過,如果我捆綁工作文件,然後添加作爲正常後的非工作之一,他們仍然打破

_Layout.cshtml:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/myBundle")"></script> 
<script src="~/Scripts/jquery.validate.js"></script> 

的Global.asax:

var bundle = new Bundle("~/js", new JsMinify()); 
bundle.AddFile("~/Scripts/jquery-1.7.2.min.js"); 
bundle.AddFile("~/Scripts/jquery-ui-1.8.19.min.js"); 
bundle.AddFile("~/Scripts/bootstrap.min.js"); 
BundleTable.Bundles.Add(bundle); 

編輯:好像在捆綁的jquery文件中有所改變,這使得驗證插件打破

解決辦法

我試圖在更新之前添加舊文件,它工作正常!管理髮現這是來自NuGet的新的jQuery UI 1.8.19崩潰。

我直接從他們的網站下載了jquery ui,然後用它來代替它,它就起作用了!

如此看來,一些在jQuery用戶界面的NuGet版本改變了捆綁拿起和更改/刪除它,所以它打破..

責怪哪一部分? jQuery UI NuGet包或mvc4捆綁?是否有捆綁問題的解決方案?

+0

你能告訴我們來自global.asax的代碼嗎,你的bundle被初始化了嗎? – 2012-04-19 09:52:03

+0

@SteveHobbs添加了我引用捆綁的代碼 – trembon 2012-04-19 09:54:36

+0

也許這會幫助http://stackoverflow.com/questions/11980458/mvc4-bundler-not-including-min-files – 2013-02-14 14:18:20

回答

3

解決

我嘗試添加了舊文件,更新前,和它的工作!管理髮現這是來自NuGet的新的jQuery UI 1.8.19崩潰。

我直接從他們的網站下載了jquery ui,然後用它來代替它,它就起作用了!

如此看來,一些在jQuery用戶界面的NuGet版本改變了捆綁拿起和更改/刪除它,所以它打破..

責怪哪一部分? jQuery UI NuGet包或mvc4捆綁?是否有捆綁問題的解決方案?

+0

有趣的發現。我會做的是提交一些反饋到連接網站,引用這個問題,看看它是否會去任何地方http://goo.gl/E1PH6 - 也可以看看「已知問題」頁面,看看是否有任何內容 - http://goo.gl/weq6b – 2012-04-19 14:39:47

+0

相當惱人的問題!另外,fwiw jQuery UI 1.8.18 NuGet包可以在捆綁器上正常工作。 – 2012-04-22 09:15:19

0

我認爲EnableDefaultBundles()試圖包含一個特定版本的jQuery,所以如果你說你已經升級了它(並且大概刪除了舊版本),我會冒險猜測並且說MVC試圖捆綁一個文件這不再存在。

你將不得不放棄使用EnableDefaultBundles(),或者至少編譯一個額外的包,幷包括這個。

你說你已經嘗試創建自己的,但你可以再試一次嗎?也許以下將幫助:

Bundle myJSBundle = new Bundle("~/MyJSBundle", typeof(JsMinify)); 
myJSBundle.AddDirectory("~/Scripts", "*.js", false); 
BundleTable.Bundles.Add(myJSBundle); 

顯然改變路徑和不匹配你自己的項目。然後包括像在頁面上:

<script src="@Url.Content("~/MyJSBundle")" type="text/javascript"></script> 

來源:http://www.dotnetexpertguide.com/2011/12/bundling-and-minification-aspnet-mvc4.html

+0

謝謝,但沒有奏效。我看到jQuery文件的註釋和版本是正確的,但代碼已經不存在 – trembon 2012-04-19 10:06:45

+0

我認爲一切正常,如果你正常的頁面上包含腳本? – 2012-04-19 10:07:37

+0

是啊,它確實,對不起,不包括在問題 – trembon 2012-04-19 10:12:00

相關問題