2016-09-14 64 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

感謝您的信息!我很驚訝,你是如何找到這樣一個準確的參考。我今天下午試圖谷歌,但還沒有達到相關內容。所以決定把它作爲一個新問題發佈!賓果,我得到了我需要的東西。 –