ASP.NET MVC 4 ScriptBundle 返回空

Posted

技术标签:

【中文标题】ASP.NET MVC 4 ScriptBundle 返回空【英文标题】:ASP.NET MVC 4 ScriptBundle returns empty 【发布时间】:2012-09-16 03:53:49 【问题描述】:

具体来说,我正在尝试在 MVC 4 中使用已经缩小的脚本创建一个 ScriptBundle,并返回这个相同的 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"));

其他 ScriptBundle 运行良好,但是当我的项目尝试引用此捆绑包时,请求显示为:scripts/bundles/telerik?v= Returning nothing。

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

我不想强制设置 BundleTable.EnableOptimizations = true,因为我希望所有其他 Bundle 在适当的时候返回非缩小版本。

任何人都有类似的经历,如果有,解决方案是什么?

【问题讨论】:

【参考方案1】:

我想你也有同样的问题,请看这个链接: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() 方法调用,以便在 Ignore() 调用之前清除默认值。谢谢!

以上是关于ASP.NET MVC 4 ScriptBundle 返回空的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 4 模型验证

asp.net mvc 4 贝宝集成

ASP.NET MVC+JQueryEasyUI1.4+ADO.NET Demo

在 ASP.NET MVC 4 中添加服务引用

ASP.NET MVC 4 Bundles和显示模式

VS 2015 ASP.NET 4 MVC 5 中的打字稿 - 设置和选择的工作组合是啥?