Добавить дополнительный класс Css программно - PullRequest
10 голосов
/ 27 июня 2011

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

Ответы [ 4 ]

16 голосов
/ 07 марта 2013

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

Вы можете установить свойство 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";
}
4 голосов
/ 27 июня 2011

Вот способ удалить класс 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 = "";
}
1 голос
/ 04 октября 2016

Вот простой метод C # для добавления или удаления 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();
    }
...