Добавить программный класс Css

У меня есть текстовое поле с классом Css под названием "required". Когда пользователь нажимает кнопку, я хотел бы добавить дополнительный класс Css в текстовое поле с именем "ошибка", не удаляя "обязательный" класс. Я хочу выполнить это с помощью кода.

Ответ 1

Вы можете установить свойство CssClass элемента управления TextBox ASP.NET. Чтобы добавить более одного класса 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

Я решил создать методы расширения для 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());
        }
    }
}

Ответ 3

Вот способ удаления класса 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 = "";
}

Ответ 4

Вот простой метод С# для добавления или удаления CssClass в WebControl...

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