我有一个带有名为'required'的Css类的文本框。当用户单击按钮时,我想在文本框中添加额外的Css类,称为“错误”,而不删除“必需”类。我想从代码隐藏中完成这个。
答案 0 :(得分:16)
我决定为WebControl创建扩展方法以获得通用解决方案。 这是我的代码:
public static class WebControlExtensions
{
public static void AddCssClass(this WebControl control, string cssClass)
{
if (string.IsNullOrEmpty(control.CssClass))
{
control.CssClass = cssClass;
}
else
{
string[] cssClasses = control.CssClass.Split(' ');
bool classExists = cssClasses.Any(@class => @class == cssClass);
if (!classExists)
{
control.CssClass += " " + cssClass;
}
}
}
public static void RemoveCssClass(this WebControl control, string cssClass)
{
if (!string.IsNullOrEmpty(control.CssClass))
{
string[] cssClasses = control.CssClass.Split(' ');
control.CssClass = string.Join(" ", cssClasses.Where(@class => @class != cssClass).ToArray());
}
}
}
答案 1 :(得分:13)
您可以设置ASP.NET Textbox控件的CssClass属性。要为元素添加多个CSS类,只需将其与空格分隔:
MyTextBox.CssClass = "class1 class2";
您可以将它放在OnClick事件处理程序中:
<asp:TextBox ID="MyTextBox" runat="server" OnClick="MyTextBox_Click" />
然后在代码隐藏中:
void MyTextBox_Click(Object sender, EventArgs e) {
MyTextBox.CssClass = "class1 class2";
}
答案 2 :(得分:4)
这是一种使用函数删除css类的方法。添加一个类非常相似。
public void RemoveCssClass(string className)
{
string[] splitClasses = TextButton.CssClass.Split(' ');
string separator = "";
foreach (string _class in splitClasses)
{
if (_class != className)
{
TextButton.CssClass += separator + _class;
separator = " ";
}
}
if (TextButton.CssClass == className)
TextButton.CssClass = "";
}
答案 3 :(得分:1)
这是一个简单的C#方法,用于在WebControl中添加或删除CssClass ...
public static void SetOrRemoveCssClass( WebControl control, string className, bool adding )
{
string[] splitClasses = control.CssClass.Split(' ');
bool hasNow = splitClasses.Contains( className );
if ( adding && !hasNow )
{
control.CssClass += " " + className;
}
else if ( !adding && hasNow ) // remove the CssClass attribute
{
control.CssClass = control.CssClass.Replace( className, "");
}
control.CssClass = control.CssClass.Replace(" "," ").Trim();
}