小编Mar*_*gas的帖子

当debug为false且存在缩小文件时,将忽略ASP.NET MVC包中的自定义脚本转换

我正在开发一个MVC 5.0(.Net 4.5)应用程序,我需要将自定义JavaScript转换应用于我包含的bundle文件.其中一个文件,我为了说明目的而调用dummy.js,有一个名为dummy.min.js的缩小文件.

我创建了一个自定义脚本转换,用window.jQuery不同的表达式替换注入的引用.当我在本地运行并处于调试模式时,一切正常,但是当在Web.config文件中关闭调试模式时,Bundle会返回dummy.min.js文件的内容,但我的脚本转换不适用于它.它仅适用于没有关联的.min.js文件的JavaScript 文件.

有没有人知道如何解决这个问题?它几乎听起来像MVC中的一个错误.

解决方法是删除缩小的文件.这篇文章通过建议删除.min.js文件来解决我的情况,因为MVC默认缩小,但我正在寻找替代解决方案(如果有的话).

非常感谢你提前.


以下是如何重现以上内容:

如果您有兴趣重现我的问题,这里是一个快速BundleConfig和实际的自定义脚本转换.它取代了window.jQuerywith的所有实例window.$jq1_9||window.jQuery,假设它是通过自执行的匿名函数注入的.

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(
            new ScriptBundle("~/bundles/dummy")
                .Include("~/Scripts/dummy.js", new InjectedJQueryVariableRewriteTransform()));
    }
}

public class InjectedJQueryVariableRewriteTransform : System.Web.Optimization.IItemTransform
{
    public string Process(string includedVirtualPath, string javaScriptCode)
    {
        // TODO: I understand this approach is naiive, but it does the trick for now.
        return javaScriptCode.Replace("window.jQuery", …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-5

3
推荐指数
1
解决办法
1645
查看次数

标签 统计

asp.net-mvc ×1

asp.net-mvc-5 ×1