标签助手 - 自关闭 HTML 标签是一个坏习惯?

Muk*_*ani 6 html asp.net-core-mvc tag-helpers

我正在合并TagHelpers到我的 MVC vNext 项目中,我意识到当我自己关闭 HTML 标签时它们不起作用。

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

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

<span asp-validation-for="FirstName"/> <!-- self closing tag -->
Run Code Online (Sandbox Code Playgroud)

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

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

<span asp-validation-for="FirstName"></span>
Run Code Online (Sandbox Code Playgroud)

生成的 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>
Run Code Online (Sandbox Code Playgroud)

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

cod*_*rsl 6

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

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

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