4

我有这个:

bundles.Add(new StyleBundle("~/Content/Styles/Default").Include("~/Content/Styles/Default/Site.css"));

它创造了这个:

<link href="/Content/Styles/Default?v=HG5hShy6_NaqI7SUDWQuc6zijexRxZooKF4ayIgK5tY1" rel="stylesheet">

现在,我在我的网络服务器上启用了目录浏览,当我单击那个样式路径时,它会将我移动到一个目录,而不是一个文件!为什么?

更新:我仍然没有设法解决这个问题,当我打开链接时,我得到的http://myserver/Content/Styles/Default?v=HG5hShy6_NaqI7SUDWQuc6zijexRxZooKF4ayIgK5tY1只是一个文件列表(比如在 ftp 上)

4

2 回答 2

9

先来看看这篇文章

捆绑是 ASP.NET 4.5 中的一项新功能,可以轻松地将多个文件组合或捆绑到一个文件中。您可以创建 CSS、JavaScript 和其他包。更少的文件意味着更少的 HTTP 请求,这可以提高首页加载性能。

请求

http://localhost/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81

用于捆绑 AllMyScripts 并包含查询字符串对 v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81。

查询字符串 v 有一个值标记,它是用于缓存的唯一标识符。只要包没有改变,ASP.NET 应用程序就会使用这个令牌请求 AllMyScripts 包。如果包中的任何文件发生变化,ASP.NET 优化框架将生成一个新的令牌,保证浏览器对该包的请求将获得最新的包

这是如何添加包含文件的目录

bundles.Add(new StyleBundle("~/jQueryUI/themes/baseAll")
    .IncludeDirectory("~/Content/themes/base", "*.css"));

这是添加多个文件的方法:

bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
          "~/Content/themes/base/jquery.ui.core.css",
          "~/Content/themes/base/jquery.ui.resizable.css",
          "~/Content/themes/base/jquery.ui.selectable.css",
          "~/Content/themes/base/jquery.ui.accordion.css",
          "~/Content/themes/base/jquery.ui.autocomplete.css",
          "~/Content/themes/base/jquery.ui.button.css",
          "~/Content/themes/base/jquery.ui.dialog.css",
          "~/Content/themes/base/jquery.ui.slider.css",
          "~/Content/themes/base/jquery.ui.tabs.css",
          "~/Content/themes/base/jquery.ui.datepicker.css",
          "~/Content/themes/base/jquery.ui.progressbar.css",
          "~/Content/themes/base/jquery.ui.theme.css"));
于 2013-02-24T05:55:47.680 回答
4

这是一个老问题,但当我在寻找解决方案时,谷歌向我指出了这里,所以我想我会添加对我有用的东西。

我和你有同样的问题,遇到了另一个我认为是一样的问题:

MVC4 - 当优化设置为 true 时捆绑不起作用

我想问题是您将捆绑包放在实际存在的虚拟 URL 上,但它是一个目录。

更改捆绑路径解决了我遇到的问题。

于 2015-05-15T15:04:27.767 回答