Dies ist das CSS-Stylesheet-Äquivalent von #1576
Ein LinkTagHelper
, das es ermöglicht, ein Fallback-Stylesheet zu laden, falls das primäre nicht geladen werden kann. Der Fehler wird festgestellt, indem ein Dummy-Tag <meta>
mit einem angegebenen Klassennamen ( asp-fallback-test-class
Attribut) asp-fallback-test-property
Attribut) ist gleich einem angegebenen Wert ( asp-fallback-test-value
).
<link href=""
asp-fallback-href=""
asp-fallback-test-class=""
asp-fallback-test-property=""
asp-fallback-test-value="" />
Alle Attribute müssen vorhanden und nicht null sein, damit der Tag Helper funktioniert. Wenn welche fehlen, wird eine Warnung und keine Operation protokolliert.
| Attributname | Typ | Einzelheiten |
| --- | --- | --- |
| asp-fallback-href | string
| Die URL, auf die zurückgegriffen werden soll, wenn die primäre URL fehlschlägt (wie im href
Attribut angegeben) |
| asp-fallback-test-class | string
| Der im Stylesheet definierte Klassenname für den Fallback-Test |
| asp-Fallback-Test-Eigenschaft | string
| Der für den Fallback-Test zu verwendende CSS-Eigenschaftsname |
| asp-Fallback-Testwert | string
| Der für den Fallback-Test zu verwendende CSS-Eigenschaftswert |
<link href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"
asp-fallback-href="~/lib/bootstrap/css/bootstrap.min.css"
asp-fallback-test-class="hidden" asp-fallback-test-property="visibility" asp-fallback-test-value="hidden" />
<link href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" />
<meta name="x-stylesheet-fallback-test" class="hidden" />
<script>
(function (a, b, c) {
var d = document,
s = d.getElementsByTagName("SCRIPT"),
meta = s[s.length-1].previousSibling;
(d.defaultView.getComputedStyle(meta)[a] === b ||
d.write('\u003clink rel="stylesheet" href="' + c + '" /\u003e'));
})("visibility", "hidden", "/lib/bootstrap/css/bootstrap.min.css");
</script>
Es tut mir leid, ein altes/geschlossenes Problem zu kommentieren. Gab es jemals Diskussionen über eine Option zum Testen von .css-Dateien, die keine singulären Klassen haben?
Zwei Beispiele:
dataTables.bootstrap.css hat mindestens zwei Selektoren, die wie table.dataTable { ... }
verkettet sind, aber keine eigenständige .dataTable
Klasse.
Ähnlich gibt es bei skin-red.css nur Nachkommen-Selektoren wie .skin-red .main-header .navbar { ... }
und wiederum keine eigenständige .skin-red
Klasse.
@kylef000 das ist interessant, ich bin mir nicht sicher, wie man das auf generische Weise testen könnte, wie wir es mit dem injizierten <meta />
Element tun.
@DamianEdwards Ah, in Ordnung. Ich habe bei meiner flüchtigen Suche zu diesem Thema nicht viele Fragen dazu gefunden, daher ist es möglicherweise nicht etwas, in das es sich lohnt, Zeit zu investieren. Der wahrscheinlich beste Weg, dies zu umgehen, besteht darin, einen Fork durchzuführen, eine Testklasse (wie .skin-red-fallback-test { ... }
) innerhalb der einzelnen Datei hinzuzufügen und dann einen PR für die jeweilige Bibliothek zu erstellen, die man verwenden könnte.
Danke für die Antwort. Schätzen Sie Ihre Arbeit in allen Bereichen von C# wirklich!
Hilfreichster Kommentar
Es tut mir leid, ein altes/geschlossenes Problem zu kommentieren. Gab es jemals Diskussionen über eine Option zum Testen von .css-Dateien, die keine singulären Klassen haben?
Zwei Beispiele:
dataTables.bootstrap.css hat mindestens zwei Selektoren, die wie
table.dataTable { ... }
verkettet sind, aber keine eigenständige.dataTable
Klasse.Ähnlich gibt es bei skin-red.css nur Nachkommen-Selektoren wie
.skin-red .main-header .navbar { ... }
und wiederum keine eigenständige.skin-red
Klasse.