2016-11-17 66 views
3

我已经通过StyleBundle向我的asp.net mvc 5项目添加了bootstrap CSS文件。asp.net mvc 5 - StyleBundle CdnFallbackExpression问题?

(它使用与加元:https://www.asp.net/ajax/cdn#Bootstrap_Releases_on_the_CDN_14

var bootstrapCssCdnPath = "http://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"; 
    var bootstrapCssBundle = new StyleBundle("~/bundles/css/bootstrap", bootstrapCssCdnPath).Include("~/Content/bootstrap.css"); 
    //bootstrapCssBundle.CdnFallbackExpression // ? 
    bundles.Add(bootstrapCssBundle); 

    var bootstrapThemeCssCdnPath = "http://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap-theme.min.css"; 
    var bootstrapThemeCssBundle = new StyleBundle("~/bundles/css/bootstraptheme", bootstrapThemeCssCdnPath).Include("~/Content/bootstrap-theme.css"); 
    //bootstrapCssBundle.CdnFallbackExpression // ? 
    bundles.Add(bootstrapThemeCssBundle); 

但是有一个问题:当我添加了不正确的URL为CDN(如添加 'ahttp' 而不是 'HTTP'),我自定义的 “回退”不使用css文件,而是在我的html源代码中显示'ahttp://'。 我在Debug或Release上运行我的网站时也是如此。

  1. 为什么我的备用不被使用?
  2. 什么是StyleBundle的CdnFallbackExpression? (特别是bootstrap.css和bootstrap-theme.css)
  3. .Include应该是.min.css文件还是自动搜索.min。版本第一?
  4. 有没有办法。包括多个css文件,使用Cdn与回退,以便我不必每次创建一个新的StyleBundle每个CSS文件,使用Cdn?

回答

6

1)这是在Microsoft ASP.NET优化框架中的错误,记录here

2)的解决方案是修改CdnFallbackExpression是这两个检查样式表,并加载回退一个JavaScript功能,从而忽略来自优化框架坏脚本。

下面是解决方案,它提供了一个StyleBundle扩展方法来解决问题:Style Bundle Fallback

3)应该有像bootstrap.css(不是bootstrap.min.css)的非微小版本。当您构建您的Web应用程序时,它会使用.min版本。更多这里:Bundler not including .min files

4)不,你不能在CDN中使用多个CSS文件(它们每个都必须有自己的包)。这里是一篇文章,解释何时使用CDN(或不)以及为什么:Know When To CDN