2016-11-17 1 views
3

J'ai ajouté des fichiers CSS bootstrap via un StyleBundle à mon projet asp.net mvc 5.asp.net mvc 5 - Questions StyleBundle CdnFallbackExpression?

(Il utilise comme CA: 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); 

Cependant, il y a un problème: quand j'ajoute une URL incorrecte comme CDN (par exemple en ajoutant 'ahttp' au lieu de 'http') mon habitude "fallback" Le fichier css n'est pas utilisé, mais il montre 'ahttp: //' dans ma source html. Même lorsque j'utilise mon site sur Debug ou Release.

  1. Pourquoi mon système de repli n'est-il pas utilisé?
  2. Qu'est-ce que CdnFallbackExpression pour un StyleBundle? (et en particulier pour un fichier bootstrap.css et un fichier bootstrap-theme.css)
  3. Le fichier .Intermine-t-il le fichier .min.css ou recherche-t-il automatiquement le fichier .min. version première?
  4. Existe-t-il un moyen de .Inclure plusieurs fichiers CSS, en utilisant un Cdn avec un système de secours, afin de ne pas avoir à créer un nouveau StyleBundle à chaque fois par fichier css utilisant un Cdn?

Répondre

6

1) Ce bogue dans le cadre d'optimisation Microsoft ASP.NET, documenté here.

2) La solution consiste à modifier le CdnFallbackExpression être une fonction javascript que les contrôles de la feuille de style et charge le repli, ignorant ainsi le mauvais scénario du Cadre d'optimisation. Voici une solution qui fournit une méthode d'extension StyleBundle pour résoudre le problème: Style Bundle Fallback.

3) Il devrait y avoir une version non -minime comme bootstrap.css (pas bootstrap.min.css). Lorsque vous créez votre application Web pour la version, elle utilise la version .min. Plus ici: Bundler not including .min files.

4) Non, vous ne pouvez pas utiliser plusieurs fichiers CSS avec CDN (chacun d'eux doit avoir son propre bundle). Voici un article qui explique quand utiliser un CDN (ou non) et pourquoi: Know When To CDN.