在 C# ASP.NET 中,我将一个类添加到<input>
使用中:
myInput.Attributes.Add("class","myClass");
在某些时候,我想删除添加的类(不是所有类)。是否有类似的内容:
myInput.Attributes.Remove("class","myClass");
.Remove()
似乎只接受一个键(没有对值)。谢谢!
没有内置任何东西来管理属性中的多个值。
您将不得不解析列表,删除类名并更新属性。
类似(未经测试):
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);
}
这些方法仅用于从WebControls中添加或删除 CSS 类(从Button s、Label s、Panel s 等都继承),如myButton.AddCssClass("class1", "class2");
或myButton.RemoveCssClass("class2");
。
这可能有点开销,但管理CssClass属性也可能有点麻烦,因为您被迫自己处理空格。
例如,你有多少次没看过这个?
string myCssClass = "class1";
myButton.CssClass += " " + myCssClass;
请随时改进方法!:)