以编程方式添加其他Css类

时间:2011-06-27 19:32:25

标签: asp.net css code-behind

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

4 个答案:

答案 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();
    }