C# 我可以在ASP.NET MVC中搜索文档并将找到的任何js文件添加到捆绑包中吗?
因此,我们正在制作一个带有插件的网站,我想知道我是否可以在plugins文件夹中搜索任何js文件并将它们添加到BundleConfig.cs类中的bundle中 我曾考虑过将所有我想绑定的文件命名为Plugin.pluginName.js,然后搜索所有文件,寻找与“Plugin..js*”匹配的文件,但我不确定具体怎么做C# 我可以在ASP.NET MVC中搜索文档并将找到的任何js文件添加到捆绑包中吗?,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,因此,我们正在制作一个带有插件的网站,我想知道我是否可以在plugins文件夹中搜索任何js文件并将它们添加到BundleConfig.cs类中的bundle中 我曾考虑过将所有我想绑定的文件命名为Plugin.pluginName.js,然后搜索所有文件,寻找与“Plugin..js*”匹配的文件,但我不确定具体怎么做 如何创建插件捆绑包?按照命名约定命名所有要捆绑的文件是一个很好的约定 将脚本捆绑包添加到捆绑包集合 public static void RegisterBundles(Bun
如何创建插件捆绑包?按照命名约定命名所有要捆绑的文件是一个很好的约定 将脚本捆绑包添加到捆绑包集合
public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(new ScriptBundle("~/bundles/plugins").Include(
"~/Scripts/*.Plugin.js")); //{pluginName}.Plugin.js convention
//...other bundles
}
如果您想放弃命名约定,还可以在plugins文件夹中搜索任何js文件
public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(new ScriptBundle("~/bundles/plugins")
.IncludeDirectory("~/Plugins", "*.Plugin.js", true));
//above recursively search subdirectories of directoryVirtualPath.
//...other bundles
}
在视图中,使用注册名称引用bundle,如下所示
@Scripts.Render("~/bundles/plugins")
参考什么是捆绑? 捆绑是ASP.NET 4.5中的一项新功能,它可以轻松地将多个文件合并或捆绑到单个文件中。 您可以创建CSS、JavaScript和其他捆绑包。更少的文件意味着更少的HTTP请求,这可以提高第一页加载性能 如何启用捆绑? 通过在Web.config文件的compilation元素中设置debug属性的值来启用或禁用绑定。在下面的XML中,debug设置为true,因此绑定和缩小被禁用。 XML 重要注意事项:Include方法中指定的虚拟路径和IncludeDirectory方法中的搜索模式可以接受一个“*”通配符作为最后一个路径段中的前缀或后缀 官方文件: 谢谢
Karthik因此,使用
“~/Plugins/*.Plugin.js”
似乎只能搜索~/Plugins
文件夹的即时内容。我需要搜索每个立即子文件夹,如“~/Plugins/*/*.Plugin.js”
,但您不能使用它,因为通配符只能位于最后一节(文件名所在的位置)。include方法使用参数。您可以使用system.io获取所有插件目录,并构建模板以提供给捆绑包。感谢您的参考,我找到了解决方案!您可以使用IncludeDirectory()
方法代替Include()
方法,例如:bundles.Add(新脚本包(“~/bundles/plugins”).IncludeDirectory(“~/plugins”,“*.Plugin.js”,true))代码>谢谢!
<system.web>
<compilation debug="true" />
</system.web>
public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(new ScriptBundle("~/bundles/AnyName").Include(
"~/Scripts/Plugins/*.js")); // this will all the files in the plugins folder with .js extension
//you can specify files separately if dont want to use wildcards
BundleTable.EnableOptimizations = true;
}