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

C# 以编程方式从HTML元素中删除特定的类名,c#,asp.net,.net,C#,Asp.net,.net,在C#ASP.NET中,我使用以下方法将类添加到: myInput.Attributes.Add("class","myClass"); 在某些时候,我想删除添加的类(不是所有类)。是否有以下方面的等价物: myInput.Attributes.Remove("class","myClass"); .Remove()似乎只接受密钥(没有对值)。谢谢大家! 属性中没有内置任何内容来管理多个值 您必须解析列表,删除类名并更新属性 类似于(未经测试): 我受到Odeds post的启发,创建了这两

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

myInput.Attributes.Add("class","myClass");
在某些时候,我想删除添加的类(不是所有类)。是否有以下方面的等价物:

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

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

属性中没有内置任何内容来管理多个值

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

类似于(未经测试):


我受到Odeds post的启发,创建了这两种扩展方法供您详细阐述

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);
}

请随时改进方法!:)

什么时候需要删除CSS类?如果
元素没有
runat=“server”
,那么您从代码隐藏添加的任何属性都不会在回发之间持久化。很好的调用,我甚至懒得去想这个问题。谢谢你帮助我意识到我不必担心移除它!谢谢你的回复!我知道你想干什么,但那似乎是无效的。如果您不介意修改语法(或者帮助我理解如何实现),我会将其标记为正确。这比我在数组中实现循环要有效得多。@Jesse-如果你有一个
使用System.Linq,那么
在那里
就可以了语句。我似乎只能使用
列表
s上的
Where
,而不能使用
数组
s.@Jesse-OK。只需在
拆分(“”)
@Search之后添加一个
.ToList()
-您只需确保该值是您想要的值。
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);
}
string myCssClass = "class1";
myButton.CssClass += " " + myCssClass;