删除特定的类名在C#ASP.NET我加入一个类来使用<input>
:编程方式从HTML元素
myInput.Attributes.Add("class","myClass");
在某些时候,我想删除添加的类(并非所有的类)。有沿线的等价物:
myInput.Attributes.Remove("class","myClass");
.Remove()
似乎只能接受一个键盘(无对的值)。谢谢!
删除特定的类名在C#ASP.NET我加入一个类来使用<input>
:编程方式从HTML元素
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小号等所有继承)等myButton.AddCssClass("class1", "class2");
或myButton.RemoveCssClass("class2");
。
这可能是一个很大的开销,但管理CssClass属性也可能有点麻烦,因为你必须自己处理空白。
例如,您没有看到过这样的多少次?
string myCssClass = "class1";
myButton.CssClass += " " + myCssClass;
请随时改进方法! :)
你什么时候需要删除CSS类?如果''元素没有'runat =“server”',那么您从代码隐藏中添加的任何属性都不会在回发之间持续存在,无论如何。 –
好的电话,我甚至懒得去想这件事。感谢您帮助我意识到我不必担心删除它! – Jesse