Как изменить класс CSS элемента HTML-страницы с помощью ASP.NET?

У меня есть несколько элементов <li> с разными идентификаторами на странице ASP.NET:

<li id = "li1" class = "class1">
<li id = "li2" class = "class1">
<li id = "li3" class = "class1">

и могут изменить свой класс с помощью JavaScript следующим образом:

li1.className = "class2"

Но есть ли способ изменить класс элемента <li> с помощью ASP.NET? Это могло быть что-то вроде:

WebControl control = (WebControl)FindControl("li1");
control.CssClass = "class2";

Но FindControl () работает не так, как я ожидал. Какие-либо предложения?

Заранее спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
18
0
58 493
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

вы должны установить runat = "server" как:

<li id = "li1" runat = "server">stuff</li>

FindControl будет работать, если вы включите runat = "server" в <li>

<li id = "li1" runat = "server">stuff</li>

В противном случае код на стороне сервера не сможет его «увидеть».

Не забывайте, что когда вы добавляете runat = "server" к элементу LI, вам необходимо изменить JavaScript, чтобы найти элемент, используя свойство ClientID серверного элемента управления.

Stephen Wrighton 23.09.2008 17:00
Ответ принят как подходящий

Метод FindControl ищет серверные элементы управления. То есть он ищет элементы управления с атрибутом «runat», установленным на «server», например:

<li runat = "server ... ></li>

Поскольку ваши теги <li> не являются серверными элементами управления, FindControl не может их найти. Вы можете добавить к этим элементам управления атрибут runat или использовать ClientScript.RegisterStartupScript для включения некоторого клиентского скрипта для управления классом, например

System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language=\"javascript\">");
sb.Append("document.getElementById(\"li1\").className=\"newClass\";")
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "MyScript", sb.ToString());

Добавлять runat = "server" на вашей HTML-странице

затем используйте свойство атрибута на своей странице asp.Net следующим образом

li1.Attributes["Class"] = "class1";
li2.Attributes["Class"] = "class2";

Это найдет элемент li и установит для него класс CSS.

using System.Web.UI.HtmlControls;

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID");
liItem.Attributes.Add("class", "someCssClass");

Не забудьте добавить свой атрибут runat = "server", как упоминалось другими.

Вы также можете попробовать это, если хотите добавить несколько стилей:

li1.Style.add("color","Blue");
li2.Style.add("text-decoration","line-through");

Leaf Dev предоставил решение для этого, но вместо «ctl» вам нужно вставить «Master».

У меня все равно работает:

using System.Web.UI.HtmlControls;

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID");
liItem.Attributes.Add("class", "someCssClass");

Пожалуйста, попробуйте это, если хотите применить стиль:

li1.Style.Add("background-color", "black");

Для CSS вы можете попробовать следующий синтаксис:

li1.Attributes.Add("class", "clsItem");

Другие вопросы по теме