为了账号安全,请及时绑定邮箱和手机立即绑定

TagHelperOutput 将属性添加到结尾,而不是开始

TagHelperOutput 将属性添加到结尾,而不是开始

C#
叮当猫咪 2023-07-09 15:08:46
我注意到 TagHelperOutput Attribute.Add 将文本添加到每个属性的开头。如何将其添加到每个属性的末尾。base.Process(context, output); output.Attributes.Add("class","test");因此,目前如果现有类是“按钮”,新类将是“测试按钮”。我希望它成为 html 树中所有类的“按钮测试”这个问题是针对 TagBuilder 的,TagBuilder AddCssClass顺序,添加到开头,如何在末尾添加新类?
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

您可以在标签助手中自定义一个CreateOrMergeAttribute方法,并首先将新的 css 类添加到属性列表中。像下面这样:


    public class EmailTagHelper: TagHelper

{

    private const string EmailDomain = "contoso.com";


    // Can be passed via <email mail-to="..." />. 

    // PascalCase gets translated into kebab-case.

    public string MailTo { get; set; }


    public override void Process(TagHelperContext context, TagHelperOutput output)

    {

        output.TagName = "a";    // Replaces <email> with <a> tag


        var address = MailTo + "@" + EmailDomain;


        output.Attributes.SetAttribute("href", "mailto:" + address);

        output.Content.SetContent(address);


        CreateOrMergeAttribute("class", "test", output);

    }


    private void CreateOrMergeAttribute(string name, object content, TagHelperOutput output)

    {

        var currentAttribute = output.Attributes.FirstOrDefault(attribute => attribute.Name == name);

        if (currentAttribute == null)

        {

            var attribute = new TagHelperAttribute(name, content);

            output.Attributes.Add(attribute);

        }

        else

        {

            var newAttribute = new TagHelperAttribute(

                name,

                $"{currentAttribute.Value.ToString()} {content.ToString()}",

                currentAttribute.ValueStyle);

            output.Attributes.Remove(currentAttribute);

            output.Attributes.Add(newAttribute);

        }

    }

}

结果截图:

//img1.sycdn.imooc.com//64aa5d2200011fe005400028.jpg

查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信