Я работаю над пользовательским TagHelper, для которого я использовал пример из Microsoft .
public class EmailTagHelper : TagHelper
{
private const string EmailDomain = "contoso.com";
// Can be passed via <email mail-to="..." />.
// PascalCase gets translated into kebab-case.
[HtmlAttributeName("mail-to")]
public string MailTo { get; set; }
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a"; // Replaces <email> with <a> tag
var content = await output.GetChildContentAsync();
var target = content.GetContent() + "@" + EmailDomain;
output.Attributes.SetAttribute("href", "mailto:" + target);
output.Content.SetContent(target);
}
}
Я использовал его с этими примерами:
<email>Support</email>
<email mail-to="Support"></email>
Первый пример работает, как ожидалось, и дает следующий вывод:
<a href="mailto:Support@contoso.com">Support@contoso.com</a>
Но второй пример, где используется mail-to
HtmlAttributeName
, не разрешен, как показано ниже.
<a href="mailto:@contoso.com">@contoso.com</a>
Это заняло у меня весь день, и я, вероятно, потом буду биться головой, но может кто-нибудь сказать мне, почему это не работает?