如何在ASP.NET中的元素中添加多个类?

Dav*_*Dev 2 css c# asp.net

我正在尝试以编程方式向<td>C#中的元素添加第二个类.

我想要添加类的元素已经分配了一个类.

如果我做的事情

myObject.CssClass = "MyClass";
Run Code Online (Sandbox Code Playgroud)

它只是覆盖原始类.

我想我可以做点什么

myObject.CssClass += " MyClass";
Run Code Online (Sandbox Code Playgroud)

但那很丑..

*免责声明 - 我讨厌在C#中使用HTML/CSS做任何事情的想法,但我已被指派对已经恶魔般的代码库应用快速修复.在这里尝试"擦亮粪便"我没有任何意义,所以请不要让我失望!:-)

Mik*_*son 14

如果您不喜欢处理字符串连接,可以创建一些辅助扩展方法.也许更多的代码,但你可以添加和删除类,而不会看到背后的东西.也许代码在您使用它的地方会更清晰.

myObject.AddCssClass("someclass");
myObject.RemoveCssClass("someclass");

---------

public static class WebHelper
{
    public static void AddCssClass(this WebControl control, string cssClass)
    {
        List<string> classes;
        if (!string.IsNullOrWhiteSpace(control.CssClass))
        {
            classes = control.CssClass.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries).ToList();
            if (!classes.Contains(cssClass))
                classes.Add(cssClass);
        }
        else
        {
            classes = new List<string> {cssClass};
        }
        control.CssClass = string.Join(" ", classes.ToArray());
    }

    public static void RemoveCssClass(this WebControl control, string cssClass)
    {
        List<string> classes = new List<string>();
        if (!string.IsNullOrWhiteSpace(control.CssClass))
        {
            classes = control.CssClass.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries).ToList();
        }
        classes.Remove(cssClass);
        control.CssClass = string.Join(" ", classes.ToArray());
    }
}
Run Code Online (Sandbox Code Playgroud)