Помощники по тегам — самозакрывающиеся HTML-теги — плохая привычка?

Я включаю 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>

Что я хочу знать, какая разница? И является ли самозакрытие парных тегов плохой привычкой. Если вы знаете какую-либо статью, в которой говорится об этом принципе проектирования, поделитесь со мной, я буду очень признателен.


person Mukesh Bhojwani    schedule 14.09.2016    source источник
comment
Как правило, самозакрытие — это нормально, если только клиент не использует очень старый браузер. или вы имеете в виду самозакрытие непустых элементов?   -  person FrozenFire    schedule 14.09.2016
comment
Ссылка на самозакрывающийся non-void elements: stackoverflow.com/questions/3558119/   -  person FrozenFire    schedule 14.09.2016
comment
если непустые элементы означают те, которые могут никогда не содержать никакого содержимого, например. input, img, br и т.д., то я не те имел в виду. Мне интересно узнать о парных элементах, 2 в моем примере, где сгенерированный HTML имеет содержимое, помещенное в открывающие и закрывающие теги label и span. Итак, является ли самозакрытие таких парных тегов серьезным нарушением?   -  person Mukesh Bhojwani    schedule 14.09.2016
comment
Примером непустых элементов являются div, span, textarea и т. д. Для этих тегов требуется закрывающий тег.   -  person FrozenFire    schedule 14.09.2016
comment
...или элементы, не перечисленные здесь: w3.org/TR /html-markup/syntax.html#void-элемент   -  person FrozenFire    schedule 14.09.2016
comment
Спасибо #FrozenFire за такое разъяснение. Да, тогда мой вопрос касается непустых элементов. Теперь, когда вы говорите, что эти теги требуют конечного тега, это эмпирическое правило? Знаете ли вы какие-либо ссылки на это правило.   -  person Mukesh Bhojwani    schedule 14.09.2016


Ответы (1)


Причина, по которой они не работают, заключается в том, что «помощники тегов MVC не меняют, является ли элемент самозакрывающимся или нет» (из комментариев в выпуске #4475).

Это известная проблема в ASP.NET, и планируется показать предупреждение в VS IDE в случае непустого элемента с конечным тегом (см. проблему #398). Один из разработчиков ASP.NET прокомментировал в выпуске #1302 следующее:

«это текущий дизайн, но у нас есть несколько проблем (открытых и закрытых) в поведении»

person codersl    schedule 14.09.2016
comment
Спасибо за информацию! Я удивлен, как вы нашли такие точные ссылки. Я пытался погуглить сегодня днем, но не нашел релевантного контента. Поэтому решил опубликовать это как новый вопрос! Бинго, я получил то, что мне было нужно. - person Mukesh Bhojwani; 14.09.2016