代码之家  ›  专栏  ›  技术社区  ›  juFo

asp。net mvc 5-StyleBundle CdnFallbackExpression问题?

  •  6
  • juFo  · 技术社区  · 9 年前

    我已经通过样式包将引导CSS文件添加到我的asp。NETMVC5项目。

    (其用作Cdn: 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://”。 当我在调试或发布时运行我的站点时也是如此。

    1. 为什么我的后备方案没有被使用?
    2. StyleBundle的CdnFallbackExpression是什么?(特别是对于bootstrap.css和bootstrapTheme.css)
    3. Include应该是.min.css文件还是首先自动搜索.min.版本?
    4. 是否有一种方法。包括多个css文件,使用带有回退的Cdn,这样我就不必每次为每个使用Cdn的css文件创建新的样式包?
    1 回复  |  直到 9 年前
        1
  •  10
  •   Community Mohan Dere    8 年前

    1) 这是Microsoft ASP。NET优化框架,文档化 here .

    2) 解决方案是修改 CdnFallbackExpression 作为一个javascript函数,它既检查样式表又加载回退,从而忽略优化框架中的错误脚本。

    StyleBundle 解决问题的扩展方法: Style Bundle Fallback .

    3) bootstrap.css (不 bootstrap.min.css .min Bundler not including .min files .

    不,您不能在CDN中使用多个CSS文件(每个文件必须有自己的包)。以下文章解释了何时使用CDN(或不使用)以及为什么: Know When To CDN .