5

私のプロジェクトのjqueryで発生した小さな問題について混乱しています。このプロジェクトは、Visual Studio 11 の MVC4 サイトです。

問題は、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 ファイルにいくつかのコードを追加し、バンドルされたファイルの先頭にこれが含まれています。

function Test(){ }

それからこれに変更し、今度はコードがありませんでした。

(function Test(){  })

奇妙なことに、UI ファイルなどの他の jQuery ファイルは削除されず、同じように処理されます。

編集:これは意図されているようです

更新 2:

もう少しテストして、壊れるファイルを見つけました。これらのファイルのいずれかをカスタムバンドルに含めると、壊れます

  • jquery.validate.js
  • jquery.validate.unobtrusive.js
  • jquery.unobtrusive-ajax.min.js

それらの前に私はこれらを持っていて、エラーなしで動作します

  • jquery-1.7.2.min.js
  • jquery-ui-1.8.19.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 ui nuget バージョンの何かが変更され、バンドルがピックアップされて変更/削除されたため、壊れているようです..

どの部分を責める?jQuery UI NuGet パッケージまたは mvc4 バンドル? そして、バンドルの問題に対する解決策はありますか?

4

2 に答える 2

3

回避策

更新前に古いファイルを追加しようとしましたが、うまくいきました! クラッシュしたのは NuGet の新しい jQuery UI 1.8.19 であることがわかりました。

私は彼らのサイトからjquery uiを直接ダウンロードし、代わりにそれを使用しましたが、うまくいきました!

そのため、jquery ui nuget バージョンの何かが変更され、バンドルがピックアップされて変更/削除されたため、壊れているようです..

どの部分を責める?jQuery UI NuGet パッケージまたは mvc4 バンドル? そして、バンドルの問題に対する解決策はありますか?

于 2012-04-19T13:15:42.590 に答える
0

jQueryの特定のバージョンを含めようとしていると思うEnableDefaultBundles()ので、アップグレードした(そしておそらく古いバージョンを削除した)と言っている場合、推測を危険にさらし、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

于 2012-04-19T10:01:46.117 に答える