Как изменить класс 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"

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

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

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

Спасибо заранее!

Ответы

Ответ 1

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

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

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

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

Ответ 2

Добавить runat="server" на странице HTML

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

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

Ответ 3

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

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

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

Ответ 4

Это найдет элемент li и задает на нем класс CSS.

using System.Web.UI.HtmlControls;

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

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

Ответ 5

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

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

Ответ 6

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

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

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

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

Ответ 7

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

Он работает для меня в любом случае:

using System.Web.UI.HtmlControls;

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

Ответ 8

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

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