ASP.NET MVC 4 ScriptBundle 返回空值

10

具体来说,我正在尝试在MVC 4中创建一个ScriptBundle,并使用已经被压缩的脚本文件,无论该项目是否处于Debug模式下都返回同一个Bundle。

我的Web项目引用了MVC Telerik Grid NuGet包。 在该包中,Telerik仅提供已压缩的JS文件。 绑定代码如下。

        // telerik scripts
        bundles.Add(new ScriptBundle("~/scripts/bundles/telerik").Include(
            "~/Scripts/2012.1.214/telerik.common.min.js",
            "~/Scripts/2012.1.214/telerik.textbox.min.js",
            "~/Scripts/2012.1.214/telerik.calendar.min.js",
            "~/Scripts/2012.1.214/telerik.datepicker.min.js",
            "~/Scripts/2012.1.214/telerik.grid.min.js",
            "~/Scripts/2012.1.214/telerik.grid.filtering.min.js"));

其他 ScriptBundles 运行正常,但当我的项目尝试引用此 Bundle 时,请求会出现以下形式:scripts/bundles/telerik?v= 并返回空值。

如果我设置 BundleTable.EnableOptimizations = true,那么它将返回 ScriptBundle 并引用特定版本,但这种解决方案是不可接受的。

我不想强制设置 BundleTable.EnableOptimizations = true,因为我希望所有其他 Bundles 在适当的情况下返回非压缩版本。

有人有类似的经验吗?如果有,解决方案是什么?

1个回答

17

我认为你遇到了相同的问题,请查看此链接:mvc4 bundler not including .min files

要么将.min.js重命名为.js,要么执行以下操作:

    public static void AddDefaultIgnorePatterns(IgnoreList ignoreList)
    {
        if (ignoreList == null)
            throw new ArgumentNullException("ignoreList");

        ignoreList.Clear();

        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);
    }

这似乎有效。我添加了Clear()方法调用以在忽略调用之前清除默认值。谢谢! - Joshua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接