Я начал с ConditionTagHelper
из документации Microsoft https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring#condition-tag-helper и добавил свой собственный
[HtmlTargetElement(Attributes = nameof(Disabled), TagStructure = TagStructure.WithoutEndTag)]
public class DisabledTagHelper : TagHelper
{
public bool Disabled { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if (Disabled) output.Attributes.Add("disabled", "disabled");
}
}
Теперь <input>
будет подавлено ?
<input disabled="true" condition="false" value="disabled && suppressed">
и <fieldset></fieldset>
будут подавлены, но его содержимое не будет 101
<fieldset disabled="true" condition="false"><input value="disabled && suppressed"></fieldset>
Что я не так делаю?
Не лучший обходной путь:
- Удалить все
TagStructure.WithoutEndTag
из TagHelper
реализаций. - Добавить самозакрывающиеся конечные теги
/>
ко всем тегам без закрывающего тега (в противном случае: Найден искаженный вспомогательный тег тега input)Помощники тегов должны иметь начальный и конечный тег или быть самозакрывающимися. )
(мне не нравится этот обходной путь, потому что добавление / удаление TagStructure
из TagHelper
вынуждает менядобавить / удалить самозакрывающиеся конечные теги.)