オプションの属性が Html で明示的に指定されているかどうかを確認したくない場合は、確認できます。前の投稿で指定されているcontext.AllAttributes
ように見つかりません。output.Attributes
Html で(オプションの) 属性を省略した場合、TagHelper がレンダリングされないことに気付きOnlyUrlOfMenuItem
ました。上記のMat Hellumsが述べたようOnlyUrlOfMenuItem
に、必要な属性のリストから属性を削除する必要がありました。この属性を最終的な出力に表示したくないので、前回の記事で述べたように属性を追加する必要はありませんでした。HtmlTargetElement()
output.Attributes.Add()
OnlyUrlOfMenuItem
デフォルト値がのオプション属性を持つ私のコードは次のfalse
とおりです。
[HtmlTargetElement("a", Attributes = "MenuItem, LangCode")]
public class ATagHelper : TagHelper
{
readonly IFhpMenuProvider _fhpMenuProvider;
public ATagHelper(IFhpMenuProvider fhpMenuProvider)
{
_fhpMenuProvider = fhpMenuProvider;
OnlyUrlOfMenuItem = false;
}
[HtmlAttributeName("LangCode")]
public string LangCode { get; set; }
[HtmlAttributeName("MenuItem")]
public string MenuItemKey { get; set; }
[HtmlAttributeName("OnlyUrlOfMenuItem")]
public bool OnlyUrlOfMenuItem { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
MenuItem menuItem = _fhpMenuProvider.GetMenuItem(MenuItemKey, LangCode);
if (menuItem != null)
{
...
if (string.IsNullOrEmpty(menuItem.Tooltip) == false && OnlyUrlOfMenuItem == false)
{
output.Attributes.SetAttribute("title", menuItem.Tooltip);
}
if (string.IsNullOrEmpty(menuItem.Caption) == false && OnlyUrlOfMenuItem == false)
{
output.Content.SetContent(menuItem.Caption);
}
}
base.Process(context, output);
}