以编程方式添加其他Css类

Dra*_*gan 10 css asp.net code-behind

我有一个带有名为'required'的Css类的文本框.当用户单击一个按钮时,我想在文本框中添加额外的Css类,称为"错误",而不删除"必需"类.我想从代码隐藏中实现这一点.

小智 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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Ken*_*isa 13

您可以设置ASP.NET Textbox控件的CssClass属性.要为元素添加多个CSS类,只需将其与空格分隔:

MyTextBox.CssClass = "class1 class2";
Run Code Online (Sandbox Code Playgroud)

您可以将它放在OnClick事件处理程序中:

<asp:TextBox ID="MyTextBox" runat="server" OnClick="MyTextBox_Click" />
Run Code Online (Sandbox Code Playgroud)

然后在代码隐藏中:

void MyTextBox_Click(Object sender, EventArgs e) {
    MyTextBox.CssClass = "class1 class2";
}
Run Code Online (Sandbox Code Playgroud)