Tag Helpers - 自关闭 HTML 标签是个坏习惯?

Posted

技术标签:

【中文标题】Tag Helpers - 自关闭 HTML 标签是个坏习惯?【英文标题】:Tag Helpers - Self closing HTML tags is a bad habit? 【发布时间】:2016-09-14 09:16:11 【问题描述】:

我将TagHelpers 合并到我的 MVC vNext 项目中,我意识到当我自行关闭 html 标记时它们不起作用。

@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"

<label asp-for="FirstName"/> <!-- self closing tag -->

<span asp-validation-for="FirstName"/> <!-- self closing tag -->

而且,当我放置结束标签时,我会看到正在显示的值。

<label asp-for="FirstName"></label>

<span asp-validation-for="FirstName"></span>

生成的 HTML

<label for="FirstName">FirstName</label>
<span class="field-validation-error" data-valmsg-for="FirstName" data-valmsg-replace="true">
    <span id="FirstName-error" class="">The FirstName field is required</span>
</span>

我想知道什么,它有什么不同?而且,自我关闭配对标签是一个坏习惯。如果您知道一些关于此设计原则的文章,请与我分享,不胜感激。

【问题讨论】:

一般自动关闭是可以的,除非客户端使用非常旧的浏览器。或者你的意思是自动关闭 non-void 元素 引用自关闭non-void elements:***.com/questions/3558119/… 如果非空元素是指那些可能不包含任何内容的元素,例如输入、img、br 等,那么我不是指那些。我有兴趣了解配对元素,即我的示例中的 2,其中生成的 HTML 将内容放置在 label 和 span 的开始和结束标签内。那么,像这样自行关闭配对标签是否属于严重犯罪行为? 非空元素的示例是divspantextarea等。这些标签需要有结束标签。 ...或此处未列出的元素:w3.org/TR/html-markup/syntax.html#void-element 【参考方案1】:

它们不起作用的原因是因为“MVC 标签助手不会改变元素是否自动关闭”(来自问题 #4475 中的 cmets)。

这是 ASP.NET 中的一个已知问题,计划是在具有结束标记的非空元素的情况下在 VS IDE 中显示警告(请参阅问题 #398)。一位 ASP.NET 开发人员在 issue #1302 中评论说:

“这是当前的设计,但我们在行为上存在一些问题(打开和关闭)”

【讨论】:

感谢您的信息!我很惊讶,您是如何找到如此准确的参考资料的。今天下午我尝试用谷歌搜索,但没有找到相关内容。所以决定将它作为一个新问题发布!宾果游戏,我得到了我需要的东西。

以上是关于Tag Helpers - 自关闭 HTML 标签是个坏习惯?的主要内容,如果未能解决你的问题,请参考以下文章

集中位置的 ASP.NET Core Tag Helpers

15--helpers方法

Tag Helpers 介绍

python测试开发django-71.自定义标签tag

Struts2 自定义下拉框标签Tag

我可以在返回 html 的自定义 Tag Helper 中使用 Tag Helper 吗?