asp.net css dynamic-css

¿Cómo cambiar la clase CSS de un elemento de página HTML utilizando ASP.NET?



dynamic-css (8)

Tengo varios elementos <li> con diferentes identificadores en la página ASP.NET:

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

y puede cambiar su clase usando JavaScript así:

li1.className="class2"

Pero, ¿hay alguna manera de cambiar la clase de elemento <li> con ASP.NET? Podría ser algo así como:

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

Pero FindControl () no funciona como esperaba. ¿Alguna sugerencia?

¡Gracias por adelantado!


También puedes probar esto si quieres agregar algunos estilos:

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


debes establecer runat = "server" como:

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


El método FindControl busca los controles del servidor. Es decir, busca controles con el atributo "runat" establecido en "servidor", como en:

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

Debido a que sus etiquetas <li> no son controles del servidor, FindControl no puede encontrarlas. Puede agregar el atributo "runat" a estos controles o usar ClientScript.RegisterStartupScript para incluir algún script del lado del cliente para manipular la clase, por ej.

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


FindControl funcionará si incluye runat = "server" en el <li>

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

De lo contrario, el código del lado del servidor no puede "verlo".


Agregue runat="server" en su página HTML

luego use la propiedad del atributo en su página asp.Net como esta

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


Esto encontrará el elemento li y establecerá una clase CSS en él.

using System.Web.UI.HtmlControls; HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID"); liItem.Attributes.Add("class", "someCssClass");

Recuerde agregar su atributo runat="server" como lo mencionaron otros.


Leaf Dev proporcionó la solución para esto, pero en lugar de "ctl" necesita insertar "Master".

A mí me funciona de todos modos:

using System.Web.UI.HtmlControls; HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID"); liItem.Attributes.Add("class", "someCssClass");


Por favor intente esto si quiere aplicar el estilo:

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

Para CSS, puede probar la siguiente sintaxis:

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