这是等效于 #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="" />
Tag Helper 的所有属性都必须存在且非空才能运行。 如果有任何缺失,它将记录警告和无操作。
| 属性名称 | 类型 | 详情 |
| --- | --- | --- |
| asp-fallback-href | string
| 如果主要的 URL 失败(在href
属性中指定),则回退到的 URL |
| asp-fallback-test-class | string
| 用于回退测试的样式表中定义的类名 |
| asp-fallback-test-property | string
| 用于回退测试的 CSS 属性名称 |
| asp-fallback-test-value | string
| 用于回退测试的 CSS 属性值 |
<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>
很抱歉对旧的/已关闭的问题发表评论。 是否曾讨论过测试没有单一类的 .css 文件的选项?
两个例子:
dataTables.bootstrap.css至少有两个选择器像table.dataTable { ... }
一样链接在一起,但没有独立的.dataTable
类。
与skin-red.css类似,只有像.skin-red .main-header .navbar { ... }
这样的后代选择器,并且没有独立的.skin-red
类。
@kylef000这很有趣,我不确定人们会如何像我们使用注入的<meta />
元素那样以通用方式测试它。
@DamianEdwards啊,好吧。 在我对此事的粗略搜索中,我没有看到太多与此相关的问题,因此这可能不值得花时间研究。 解决这个问题的最好方法可能是 fork,在单个文件中添加一个测试类(如.skin-red-fallback-test { ... }
),然后为可能使用的任何特定库创建 PR。
感谢您的答复。 真的很感谢你在 C# 方面所做的一切!
最有用的评论
很抱歉对旧的/已关闭的问题发表评论。 是否曾讨论过测试没有单一类的 .css 文件的选项?
两个例子:
dataTables.bootstrap.css至少有两个选择器像
table.dataTable { ... }
一样链接在一起,但没有独立的.dataTable
类。与skin-red.css类似,只有像
.skin-red .main-header .navbar { ... }
这样的后代选择器,并且没有独立的.skin-red
类。