ASP.NET MVC 4捆绑带文件夹路径中的通配符

时间:2013-08-21 22:04:52

标签: asp.net-mvc jquery-ui asp.net-mvc-4 bundle

我的团队使用自定义NuGet包来安装jQuery UI,它将主题文件放入如下目录结构中:

  • 内容
    • 的jquery-UI-1.10.3
      • 图像
      • 的jquery-ui.css
      • 的jquery-ui.min.css

我正在尝试使用ASP.NET MVC 4捆绑包将此内容包含在我的应用程序的App_Start文件夹中的BundleConfig类中,如下所示:

bundles.Add( new StyleBundle( "~/bundles/css" )
                 .Include( "~/Content/normalize-{version}.css",
                           "~/Content/jquery-ui-{version}/jquery-ui.css",
                           "~/Content/Site.css" ) );

运行网站时会抛出错误:

Directory does not exist.
Parameter name: directoryVirtualPath

我也尝试过:

bundles.Add( new StyleBundle( "~/bundles/css" )
                 .Include( "~/Content/normalize-{version}.css" )
                 .IncludeDirectory( "~/Content/jquery-ui-*", "*.css" )
                 .Include( "~/Content/Site.css" ) );

这显然也不起作用。我可以在文件夹上明确指定版本,但这会破坏使用捆绑包的部分好处。

那么如何在文件夹路径中使用通配符?

1 个答案:

答案 0 :(得分:6)

您可以使用IncludeDirectory的重载版本来搜索子目录。

假设您有以下文件:

\Root\Content\jquery-ui-1.10.3\jquery-ui.css

使用此代码查找并添加它:

.IncludeDirectory("~/Content", "jquery-ui.css", true)

这很有用,因为它总是会找到jquery-ui.css,无论你把它放在哪里。

此方法的缺点是它会搜索并包含它找到的所有 jquery-ui.css个文件,如果您不确保只有一个文件,可能会导致一些错误jquery-ui.css存在。

(请记住,搜索子目录仍将搜索根目录,即〜/ Content)