是否可以在同一个Bundle中包含脚本和样式?(asp.net mvc5)

时间:2015-04-26 08:03:55

标签: asp.net-mvc asp.net-mvc-5 bundling-and-minification scriptbundle stylebundle

尝试使用具有相同虚拟路径包名称的css和js文件    1 - 有可能吗? (尝试过但失败了。无法为脚本和样式定义相同的虚拟路径名称)
   2 - 它可以与混合包一起构建一个ScriptAndStyleBundle吗?

仅仅因为我想为css和js使用同名

//in BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/doMenu")
            .Include("~/Plugins/doMenu/files/js/doMenu.js")
            );

        bundles.Add(new StyleBundle("~/bundles/doMenu")
            .Include("~/Plugins/doMenu/files/css/doMenu.css")
            );
//in _PartialLayoutMenu.cs
@Scripts.Render("~/bundles/doMenu")
@Styles.Render("~/bundles/doMenu")

<小时/> 结果是:

<!--MENU LAYOUT-->
<script src="/Plugins/doMenu/files/css/doMenu.css"></script>

<link href="/Plugins/doMenu/files/css/doMenu.css" rel="stylesheet"/>
<!--/MENU LAYOUT-->

任何线索?或者我想要这样一个无用的头脑?(谢谢)

2 个答案:

答案 0 :(得分:3)

捆绑名称在样式和脚本中应该是唯一的。由于它们是完全不同的类型,因此您无法将它们混合到一个包中,因为您不会知道如何在DOM中引用它:您是否应该使用<script><style>标记。不幸的是,你所要求的是不可能的。

答案 1 :(得分:3)

我正在使用支持此功能的Cassette

配置:

bundles.Add<ScriptBundle>(BundleNames.Grid,
                          new[] {"~/Scripts/Grid.js"},
                          bundle => bundle.AddReference("~/" + BundleNames.Base));

bundles.Add<StylesheetBundle>(BundleNames.Grid,
                              new[] {"~/Content/Grid.less"});

BundleNames是一个带有常量字符串的助手类。

视图中的参考包:

@{
    Bundles.Reference(BundleNames.Grid);
}

正如您所期望的那样,这将包括所有CSS和JS,按正确的顺序。

我还提到在ASP.Net进行捆绑管理之前我已经开始使用Cassette,我对它非常满意。我没有找到任何有趣的功能ASP.Net有我失踪。