7

ASP .NETでのスクリプトのバンドルと縮小に問題があります。インターネットで見つかったすべての一般的なソリューションを試しましたが、それでも同じ問題が発生します。

BundleConfig.csのように見えます

namespace MYPROJ{
public class BundleConfig
{
    public static void AddDefaultIgnorePatterns(IgnoreList ignoreList)
    {
        if (ignoreList == null)
            return;
        ignoreList.Ignore("*.intellisense.js");
        ignoreList.Ignore("*-vsdoc.js");
        ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled);
        ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled);
        ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled);
    }

    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.IgnoreList.Clear();
        AddDefaultIgnorePatterns(bundles.IgnoreList);

        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

…
…

        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/jquery.unobtrusive-ajax.min.js", "~/Scripts/kendoui/kendo.all.min.js", "~/Scripts/kendoui/kendo.combobox.min.js", "~/Scripts/kendoui/kendo.grid.min.js"));
        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/kendoui/kendo.all.min"));
        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/kendoui/kendo.combobox.min"));
        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/kendoui/kendo.grid.min.js"));            
        bundles.Add(new ScriptBundle("~/Scripts").IncludeDirectory("~/Scripts", "*.js").IncludeDirectory("~/Scripts/kendoui", "*.js"));

        ……
        BundleTable.EnableOptimizations = true;
    }
}
}

そしてマスタービューで:

@Scripts.Render("~/Scripts")

これで、実行すると次のタグが表示されます。

<script src="/Scripts?v=ZnxC8dcoc3fJ-hfKQHLiTe19PjJFHwPhwHPUncuBtzE1"></script>

そして、chrome code inspectorを使用すると、上記のリソースのステータスコードは次のようStatus Code: 302 FoundScripts/なります。Status Code: 404 Not Found

また、ビューソースでスクリプトファイルをクリックしてもアクセスできないため、何もロードされていないように見えますが、すべてのファイルとディレクトリが正しく配置されています。情報として、私のスタイルシートのバンドルは正常に機能しています。

親切に助けてくれてありがとう。

4

4 に答える 4

8

バンドルに既存のディレクトリの名前でもある名前を付けることはできません。バンドルの名前を変更するか、を追加して、/js正しく機能するようにします。

bundles.Add(new ScriptBundle("~/Scripts/js").IncludeDirectory("~/Scripts", "*.js").IncludeDirectory("~/Scripts/kendoui", "*.js"));

@Scripts.Render("~/Scripts/js")

存在しない他の名前も同様に機能します。

 bundles.Add(new ScriptBundle("~/ScriptMonkey").IncludeDirectory("~/Scripts", "*.js").IncludeDirectory("~/Scripts/kendoui", "*.js"));

/ScriptMonkey...ディレクトリがないと仮定します。

于 2013-03-21T18:21:26.197 に答える
2

バンドルの仮想パスに存在しないディレクトリを使用してみましたか?好き

...new ScriptBundle("~/bundle/Scripts")...
于 2013-03-21T06:07:54.280 に答える
2

受け入れられた答えは私にはうまくいきませんでした。Visual Studio2010SP1でMVC4.0を使用しています。「jquery-ui.min.js」ファイルという名前のjsファイルがあり、ロードされませんでした。私のBundle.configコードは次のとおりです。

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(                        
                            "~/Scripts/jquery-ui.min.js"));

ファイルの名前をjquery-ui.jsに変更し、コードを次のように更新しました

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(                        
                        "~/Scripts/jquery-ui.js"));

この情報はここから入手しました。

于 2014-10-21T22:18:01.177 に答える
1

リクエストを処理するかどうかを決定するバンドルモジュールロジックは、既存のファイルまたはディレクトリへのリクエストを引き継ぎません。そのため、バンドルリクエストは、既存のディレクトリ(またはファイル)と同じ仮想パスに存在する場合は機能しません。

于 2013-03-21T16:54:56.907 に答える