2014-01-08 4 views
6

Hat MVC eine eingebaute Möglichkeit, einen CDN Fallback für Stylesheets anzugeben? Ich versuche, ein Fallback für das Stylesheet jQuery Mobile Structure einzurichten. Hier ist mein Code in der RegisterBundles Methode:MVC CDN Fallback für Style Bundle

var JQMstyleSheet = new StyleBundle("~/JQMstyle", "http://code.jquery.com/mobile/1.3.1/jquery.mobile.structure-1.3.1.min.css").Include("~/theme/jquery.mobile.structure-1.3.1.css"); 
JQMstyleSheet.CdnFallbackExpression = "window.jQuery.mobile"; 
bundles.Add(JQMstyleSheet); 

Wenn die Seite macht es diese Ausgänge mit dem html:

<script> 
(window.jQuery.mobile)||document.write('<script src="/JQMstyle"><\/script>'); 
</script> 

Wenn die CDN es scheitert nicht hinzufügen dynamisch das Stylesheet wie es funktioniert perfekt für meine Javascript-Dateien. Ich denke, das Problem ist, dass es versucht, ein Skript zu rendern, wenn es ein Stil sein sollte. Gibt es eine andere Fallback-Eigenschaft als CdnFallbackExpression?

UPDATE

Die Microsoft-Dokumentation für System.Web.Optimization.StyleBundle zeigt eine CdnFallbackExpression als verfügbare Eigenschaft jedoch in der Beschreibung heißt es „Ruft das Skript Erweiterung der Klasse Scripts Helfer gemacht ...“ http://msdn.microsoft.com/en-us/library/system.web.optimization.stylebundle(v=vs.110).aspx Ist das ein Bug in der System.Web.Optimization.StyleBundle? sollte diese Eigenschaft nicht durch Referenz auf die Styles Hilfsklasse?

+0

'JQMstyleSheet.CdnFallbackExpression =" window.jQuery.mobile ";' warum hast du das? – Amila

+0

Ich brauche das Stylesheet zu laden, wenn das cdn fehlschlägt. eine Überprüfung für window.jQuery.mobile wird mir sagen, wenn der CDN-Download von Jquery Mobile fehlgeschlagen ist, dann weiß ich, dass das Stylesheet cdn Download am wahrscheinlichsten gescheitert ist. Ich bin nicht sicher, wie überprüft werden soll, gibt ein Stylesheet mit CdnFallbackExpression. – Adrian

Antwort

10

TLDR;

Überprüfen Sie meine Lösung, die eine StyleBundle-Erweiterungsmethode zur Verfügung stellt, um das Problem zu lösen.

Style Bundle Fallback

Auch

Ja es ist ein Fehler in der Microsoft ASP.NET-Optimierung Framework ist, dokumentiert here.

Die Lösung ist die CdnFallbackExpression modifizieren eine JavaScript-Funktion zu sein, die beiden Überprüfungen für das Stylesheet und den Rückfall laden, damit die schlechte Skript aus den Optimierung Rahmen ignorieren.

Es gibt ein paar knifflige Teile, insbesondere die Überprüfung, ob ein Stylesheet geladen wird, wenn es aus einer anderen Domäne kommt, wie die meisten CDN-Quellen.

Ich habe eine Lösung auf GitHub, die Sie verwenden können, bis das Problem im Framework behoben ist; Allerdings würde ich immer noch auf den kniffligen Teil der Entscheidung achten, wann das Stylesheet tatsächlich geladen ist.

Verwandte Themen