Mvc: Membuat<link/> Tag Helper dengan dukungan untuk sumber fallback

Dibuat pada 18 Nov 2014  ·  3Komentar  ·  Sumber: aspnet/Mvc

Ini adalah stylesheet CSS yang setara dengan #1576

LinkTagHelper yang memungkinkan spesifikasi dari stylesheet fallback dimuat jika primer gagal dimuat. Kegagalan ditentukan dengan cara menyuntikkan tag <meta> dummy dengan nama kelas tertentu ( atribut asp-fallback-test-class ) dan kemudian menguji gaya yang dihitung dari elemen tersebut untuk melihat apakah properti CSS tertentu ( asp-fallback-test-property atribut) sama dengan nilai yang ditentukan ( asp-fallback-test-value ).

Penggunaan

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

Semua atribut harus ada dan tidak nol agar Tag Helper dapat beroperasi. Jika ada yang hilang, itu akan mencatat peringatan dan no-op.

Argumen

| Nama Atribut | Ketik | Detail |
| --- | --- | --- |
| asp-fallback-href | string | URL untuk mundur jika yang utama gagal (seperti yang ditentukan dalam atribut href ) |
| asp-fallback-test-class | string | Nama kelas yang ditentukan dalam lembar gaya yang akan digunakan untuk uji mundur |
| asp-fallback-test-property | string | Nama properti CSS yang akan digunakan untuk pengujian mundur |
| asp-fallback-test-value | string | Nilai properti CSS yang akan digunakan untuk pengujian mundur |

Contoh

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

Keluaran 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

Komentar yang paling membantu

Maaf untuk mengomentari masalah lama/tertutup. Apakah pernah ada diskusi tentang opsi untuk menguji file .css yang tidak memiliki kelas tunggal?

Dua contoh:

  • dataTables.bootstrap.css memiliki minimal dua selektor yang dirantai bersama seperti table.dataTable { ... } tetapi tidak ada kelas .dataTable berdiri sendiri.

  • Sama halnya dengan skin-red.css , hanya ada pemilih turunan seperti .skin-red .main-header .navbar { ... } dan sekali lagi tidak ada kelas .skin-red berdiri sendiri.

Semua 3 komentar

Maaf untuk mengomentari masalah lama/tertutup. Apakah pernah ada diskusi tentang opsi untuk menguji file .css yang tidak memiliki kelas tunggal?

Dua contoh:

  • dataTables.bootstrap.css memiliki minimal dua selektor yang dirantai bersama seperti table.dataTable { ... } tetapi tidak ada kelas .dataTable berdiri sendiri.

  • Sama halnya dengan skin-red.css , hanya ada pemilih turunan seperti .skin-red .main-header .navbar { ... } dan sekali lagi tidak ada kelas .skin-red berdiri sendiri.

@kylef000 itu menarik, saya tidak yakin bagaimana orang akan mengujinya secara umum seperti yang kita lakukan menggunakan elemen <meta /> disuntikkan.

@DamianEdwards Ah, baiklah. Saya tidak melihat banyak pertanyaan mengenai hal ini dalam pencarian sepintas saya tentang masalah ini, jadi itu mungkin bukan sesuatu yang layak untuk diinvestasikan waktu. Mungkin cara terbaik untuk mengatasinya adalah dengan fork, tambahkan kelas pengujian (seperti .skin-red-fallback-test { ... } ) di dalam file individual, lalu buat PR untuk perpustakaan mana pun yang mungkin digunakan.

Terima kasih atas tanggapannya. Sangat menghargai pekerjaan Anda pada semua hal C#!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat