2016-09-14 93 views
2

我在我的MVC vNext项目中纳入了TagHelpers,当我自己关闭HTML标记时,我意识到它们不起作用。标签助手 - 自闭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> 

我想知道什么,又有什么区别呢?而且,自动关闭配对标签是一种坏习惯。如果你知道一些关于这个设计原理的文章,请与我分享,这将非常感谢。

+0

一般自闭是好的,除非客户使用的是非常旧的浏览器。或者你的意思是自动关闭*非无效元素*? – FrozenFire

+1

引用自闭'非空元素':http://stackoverflow.com/questions/3558119/are-self-closing-tags-valid-in-html5 – FrozenFire

+0

如果非无效元素表示那些可能永远不会包含任何内容,例如输入,img,br等,那我不是那个意思。我有兴趣了解配对元素,在我的示例中为2,其中生成的HTML将内容放置在label&span的开始和结束标记中。那么,自动关闭配对标签就像是一种严重的进攻行为? –

回答

3

他们不工作的原因是因为“MVC标签助手不会改变元素是否自动关闭”(来自已发布评论#4475)。

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

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

+0

感谢您的信息!我很惊讶,你是如何找到这样一个准确的参考。我今天下午试图谷歌,但还没有达到相关内容。所以决定把它作为一个新问题发布!宾果,我得到了我需要的东西。 –