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