【发布时间】:2016-11-12 00:53:22
【问题描述】:
我已经从 ASP.NET 核心复制了电子邮件标签助手的演示。
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring
当我在我的视图页面上创建一个如下所示的标签时:
<div>
<Email MailTo="abc"></Email>
</div>
我希望公共属性 MailTo 将被设置,但它不是(当我调试时,它显示为 null)。但是,当我从 TagHelperOutput 获取输出属性时,如下所示:
var mailToWorks = output.Attributes["MailTo"].Value.ToString();
mailToWorks 如我所料得到“abc”,但未设置公共属性 MailTo。我的 Tag Helper 源代码如下。
[HtmlTargetElement("Email")]
public class EmailTagHelper : TagHelper
{
private const string EmailDomain = "contoso.com";
// Can be passed via <email mail-to="..." />.
// Pascal case gets translated into lower-kebab-case.
public string MailTo { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
var mailToWorks = output.Attributes["MailTo"].Value.ToString();
output.TagName = "a"; // Replaces <email> with <a> tag
var address = MailTo + "@" + EmailDomain;
output.Attributes.SetAttribute("href", "mailto:" + address);
output.Content.SetContent(address);
}
}
【问题讨论】:
-
我认为它说你应该有这个:
-
谢谢@SerifEmek 你是对的,这解决了问题。奇怪的是,智能感知建议紫色的“MailTo”。一旦我输入它,它也喜欢 mail-to。这有意义吗?
-
不客气。不,它没有。实际上,我对用法并不熟悉。刚刚从您的链接中了解到。
标签: razor asp.net-core