TagBuilder AddCssClass顺序,添加到开头,如何在结尾添加新类?

时间:2019-07-19 04:36:37

标签: c# asp.net-core .net-core tagbuilder

我注意到Tagbuilder AddCssClass将标签添加到Beginning。如何使它添加到末尾。

TagBuilder test = new TagBuilder("div");
toolset.AddCssClass("Number1");
toolset.AddCssClass("Number2");

在这种情况下,Number2将是第一个。

1 个答案:

答案 0 :(得分:3)

看代码here,似乎不可能使用您所使用的方法将类添加到末尾。 AddCssClass的代码如下:

public void AddCssClass(string value)
{
    string currentValue;

    if (Attributes.TryGetValue("class", out currentValue))
    {
        Attributes["class"] = value + " " + currentValue;
    }
    else
    {
        Attributes["class"] = value;
    }
}

幸运的是,TagBuilder对象公开了Attributes,因此我们可以编写一个扩展方法,该方法将值添加到末尾而不是开头:

public static class TagBuilderExtensions
{
    public void AddCssClassEnd(this TagBuilder tagBuilder, string value)
    {
        string currentValue;

        if (tagBuilder.Attributes.TryGetValue("class", out currentValue))
        {
            tagBuilder.Attributes["class"] = currentValue + " " + value;
        }
        else
        {
            tagBuilder.Attributes["class"] = value;
        }
    }
}

如果您在定义上述扩展方法的命名空间中拥有一个using,则可以像这样简单地使用它:

toolset.AddCssClassEnd("Number1");