У меня есть несколько элементов <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 () работает не так, как я ожидал. Какие-либо предложения?
Заранее спасибо!





вы должны установить runat = "server" как:
<li id = "li1" runat = "server">stuff</li>
FindControl будет работать, если вы включите runat = "server" в <li>
<li id = "li1" runat = "server">stuff</li>
В противном случае код на стороне сервера не сможет его «увидеть».
Метод 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");
Не забывайте, что когда вы добавляете runat = "server" к элементу LI, вам необходимо изменить JavaScript, чтобы найти элемент, используя свойство ClientID серверного элемента управления.