以编程方式从 HTML 元素中删除特定的类名

本文关键字:删除 方式 编程 HTML 元素 | 更新日期: 2023-09-27 18:34:08

在 C# ASP.NET 中,我使用以下方法将类添加到<input>

myInput.Attributes.Add("class","myClass");

在某些时候,我想删除添加的类(不是所有类)。是否有类似的内容:

myInput.Attributes.Remove("class","myClass");

.Remove()似乎只接受密钥(没有配对值)。谢谢!

以编程方式从 HTML 元素中删除特定的类名

没有内置任何功能来管理属性中的多个值。

您必须解析列表,删除类名并更新属性。

类似的东西(未经测试):

var classes = myInput.Attributes["class"].Split(' ');
var updated = classes.Where(x => x != "classtoremove").ToArray();
myInput.Attributes["class"] = string.Join(" ", updated);

我受到 Odeds 帖子的启发,并创建了这两个扩展方法供您详细说明;

public static void AddCssClass(this WebControl control, params string[] args)
{
    List<string> classes = control.CssClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
    List<string> classesToAdd = args.Where(x => !classes.Contains(x)).ToList<string>();
    classes.AddRange(classesToAdd);
    control.CssClass = String.Join(" ", classes);
}
public static void RemoveCssClass(this WebControl control, params string[] args)
{
    List<string> classes = control.CssClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
    classes = classes.Where(x => !args.Contains(x)).ToList<string>();
    control.CssClass = String.Join(" ", classes);
}

这些方法仅用于从Web控件中添加或删除CSS类(按钮,标签,面板等都继承其中),例如myButton.AddCssClass("class1", "class2");myButton.RemoveCssClass("class2");

这很可能有点开销,但管理 CssClass 属性也可能有点麻烦,因为您被迫自己处理空格。

例如,你有多少次没有看到这个?

string myCssClass = "class1";
myButton.CssClass += " " + myCssClass;

请随时改进方法! :)