Mvc: 作成する<link/>フォールバックソースをサポートするタグヘルパー

作成日 2014年11月18日  ·  3コメント  ·  ソース: aspnet/Mvc

これは#1576に相当するCSSスタイルシートです

プライマリのロードに失敗した場合にフォールバックスタイルシートの指定をロードできるようにするLinkTagHelper 。 失敗は、指定されたクラス名( asp-fallback-test-class属性)を持つダミーの<meta>タグを挿入し、その要素の計算されたスタイルをテストして、指定されたCSSプロパティ( asp-fallback-test-property属性)は、指定された値( asp-fallback-test-value )と同じです。

使用法

<link href=""
      asp-fallback-href=""
      asp-fallback-test-class=""
      asp-fallback-test-property=""
      asp-fallback-test-value="" />

タグヘルパーが動作するには、すべての属性が存在し、null以外である必要があります。 不足しているものがある場合は、警告とno-opをログに記録します。

引数

| 属性名| タイプ| 詳細|
| --- | --- | --- |
| asp-fallback-href | string | プライマリが失敗した場合にフォールバックするURL( href属性で指定)|
| asp-fallback-test-class | string | フォールバックテストに使用するスタイルシートで定義されたクラス名|
| asp-fallback-test-property | string | フォールバックテストに使用するCSSプロパティ名|
| asp-fallback-test-value | string | フォールバックテストに使用するCSSプロパティ値|

ソースCSHTML

 <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" />

HTMLを出力

<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>
3 - Done enhancement feature-Tag-Helpers

最も参考になるコメント

古い/クローズされた問題についてコメントして申し訳ありません。 特異なクラスを持たない.cssファイルをテストするオプションについての議論はありましたか?

2つの例:

  • dataTables.bootstrap.cssには、少なくとも2つのセレクターがtable.dataTable { ... }ようにチェーンされていますが、スタンドアロンの.dataTableクラスはありません。

  • skin-red.cssと同様に、 .skin-red .main-header .navbar { ... }ような子孫セレクターのみがあり、スタンドアロンの.skin-redクラスはありません。

全てのコメント3件

古い/クローズされた問題についてコメントして申し訳ありません。 特異なクラスを持たない.cssファイルをテストするオプションについての議論はありましたか?

2つの例:

  • dataTables.bootstrap.cssには、少なくとも2つのセレクターがtable.dataTable { ... }ようにチェーンされていますが、スタンドアロンの.dataTableクラスはありません。

  • skin-red.cssと同様に、 .skin-red .main-header .navbar { ... }ような子孫セレクターのみがあり、スタンドアロンの.skin-redクラスはありません。

@ kylef000は興味深いですが、注入された<meta />要素を使用する場合のように、一般的な方法でそれをテストする方法がわかりません。

@DamianEdwardsああ、.skin-red-fallback-test { ... } )を追加してから、使用している可能性のある特定のライブラリのPRを作成することです。

ご回答ありがとうございます。 C#のすべての作業に本当に感謝します!

このページは役に立ちましたか?
0 / 5 - 0 評価