ASP.NET核心标签taghelper。如何附加自定义文本

And*_*i M 1 asp.net asp.net-core-mvc asp.net-core

当我们写

<label asp-for="Email"></label>
Run Code Online (Sandbox Code Playgroud)

它生成以下HTML:

<label for="Email">Email Address</label>
Run Code Online (Sandbox Code Playgroud)

工作正常。问题是是否有可能扩展标签助手以支持要添加的自定义文本?例如,如果我写

<label asp-for="Email" asp-postfix=":"></label>
Run Code Online (Sandbox Code Playgroud)

它生成以下HTML:

<label for="Email">Email Address:</label>
Run Code Online (Sandbox Code Playgroud)

请注意,现在冒号已添加到标签文本中。冒号可以用任何其他文本替换。

Dea*_*ane 5

如果您打算扩展当前的aspnet标记帮助器,则不能。您将需要创建自己的标签助手。aspnet和您的一个都将运行。

[HtmlTargetElement("label", Attributes = _textAttributeName)]
public class PostfixTagHelper : TagHelper
{
    private const string _textAttributeName = "postfix-text";

    [HtmlAttributeName(_textAttributeName)]
    public string Text { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        base.Process(context, output);

        output.Content.Append(Text);
    }

    public override int Order
    {
        get
        {
            return 100; // Needs to run after aspnet
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要使用它:

<label asp-for="Email" postfix-text=":"></label>
Run Code Online (Sandbox Code Playgroud)