Подтвердить что ты не робот

Добавить класс CSS в div в коде

У меня есть div, и я пытаюсь добавить в него класс CSS, но при попытке попробовать

получить следующую ошибку:
Property or indexer 'System.Web.UI.HtmlControls.HtmlControl.Style' cannot be assigned to -- it is read only

Я использую следующий код:

protected void BTNEvent_Click(object sender, ImageClickEventArgs e)
{
    BtnventCss.Style= "hom_but_a";                 
}

Кто-нибудь может мне помочь?

4b9b3361

Ответ 1

Что делать, если:

 <asp:Button ID="Button1" runat="server" CssClass="test1 test3 test-test" />

Чтобы добавить или удалить класс, вместо того, чтобы переписывать все классы с помощью

   BtnventCss.CssClass = "hom_but_a"

сохраните HTML правильно:

    string classname = "TestClass";

    // Add a class
    BtnventCss.CssClass = String.Join(" ", Button1
               .CssClass
               .Split(' ')
               .Except(new string[]{"",classname})
               .Concat(new string[]{classname})
               .ToArray()
       );

     // Remove a class
     BtnventCss.CssClass = String.Join(" ", Button1
               .CssClass
               .Split(' ')
               .Except(new string[]{"",classname})
               .ToArray()
       );

Это гарантирует

  • Исходные имена классов остаются.
  • Нет двойных имен классов
  • Нет лишних пробелов.

Особенно, когда клиентская разработка использует несколько классов для одного элемента.

В вашем примере используйте

   string classname = "TestClass";

    // Add a class
    Button1.Attributes.Add("class", String.Join(" ", Button1
               .Attributes["class"]
               .Split(' ')
               .Except(new string[]{"",classname})
               .Concat(new string[]{classname})
               .ToArray()
       ));

     // Remove a class
     Button1.Attributes.Add("class", String.Join(" ", Button1
               .Attributes["class"]
               .Split(' ')
               .Except(new string[]{"",classname})
               .ToArray()
       ));

Вы должны обернуть это в метод/свойство;)

Ответ 2

<div runat="server"> отображается на HtmlGenericControl. Попробуйте использовать BtnventCss.Attributes.Add("class", "hom_but_a");

Ответ 3

Свойство Style получает коллекцию всех свойств каскадной таблицы стилей (CSS); вы не можете установить его.

Попробуйте BtnventCss.CssClass = "hom_but_a";.

Я предполагаю, что BtnventCss - это WebControl.

Я только что видел, что вы, вероятно, используете <div runat="server"...

Если это так, вы можете попробовать:

BtnventCss.Attributes.Add("class", "hom_but_a");

Вы можете сделать div a asp: panel - они будут отображаться одинаково, и вы получите лучшую поддержку на стороне сервера.

Ответ 4

Для элемента управления без ASP.NET, то есть HTML-элементов управления, таких как div, table, td, tr и т.д., вам нужно сначала сделать им серверный элемент управления, назначить идентификатор, а затем назначить свойство из кода сервера:

страница ASPX

<head>
    <style type="text/css">
        .top_rounded
        {
            height: 75px;
            width: 75px;
            border: 2px solid;
            border-radius: 5px;
            -moz-border-radius: 5px; /* Firefox 3.6 and earlier */
            border-color: #9c1c1f;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div runat="server" id="myDiv">This is my div</div>
    </form>
</body>

Страница CS

myDiv.Attributes.Add("class", "top_rounded");

Ответ 5

Вот два метода расширения, которые вы можете использовать. Они обеспечивают сохранение любых существующих классов и не дублируют добавляемые классы.

public static void RemoveCssClass(this WebControl control, String css) {
  control.CssClass = String.Join(" ", control.CssClass.Split(' ').Where(x => x != css).ToArray());
}

public static void AddCssClass(this WebControl control, String css) {
  control.RemoveCssClass(css);
  css += " " + control.CssClass;
  control.CssClass = css;
}

Использование: hlCreateNew.AddCssClass("disabled");

Использование: hlCreateNew.RemoveCssClass("disabled");

Ответ 7

Button1.CssClass += " newClass";

Это не приведет к стиранию исходных классов для этого элемента управления. Попробуйте это, он должен работать.