Добавить класс 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";
}
Кто-нибудь может мне помочь?
Ответы
Ответ 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");
Ответ 6
В ADD классы для элементов html см. как добавить класс css в общий элемент управления html?. Есть ответы, аналогичные приведенным здесь, но показывающие, как добавить классы в html.
Ответ 7
Button1.CssClass += " newClass";
Это не приведет к стиранию исходных классов для этого элемента управления. Попробуйте это, он должен работать.