texto runat net letra from div color code change cambiar behind asp c# css

c# - runat - css color letra



Agregar clase CSS a un div en código detrás (7)

Tengo un div y estoy tratando de agregarle una clase de CSS en el código pero recibo el siguiente error cuando intento

Property or indexer ''System.Web.UI.HtmlControls.HtmlControl.Style'' cannot be assigned to -- it is read only

Estoy usando el siguiente código:

protected void BTNEvent_Click(object sender, ImageClickEventArgs e) { BtnventCss.Style= "hom_but_a"; }

¿Alguien puede ayudarme por favor?


Aquí hay dos métodos de extensión que puede usar. Aseguran que las clases existentes se conservan y no duplican las clases que se agregan.

public static void RemoveCssClass(this WebControl control, String css) { control.CssClass = String.Join(" ", control.CssClass.Split('' '').Where(x => x != css).ToArray()); } public static void AddCssClass(this WebControl control, String css) { control.RemoveCssClass(css); css += " " + control.CssClass; control.CssClass = css; }

Uso: hlCreateNew.AddCssClass("disabled");

Uso: hlCreateNew.RemoveCssClass("disabled");


La propiedad Style obtiene una colección de todas las propiedades de hojas de estilo en cascada (CSS); no puedes configurarlo

Pruebe BtnventCss.CssClass = "hom_but_a"; en lugar.

Supongo que BtnventCss es un WebControl.

Acabo de ver que probablemente estés usando <div runat="server"...

Si es así, puedes intentar:

BtnventCss.Attributes.Add("class", "hom_but_a");

Podrías hacer el asp:panel div asp:panel : lo renderizarán igual y obtendrás una mejor compatibilidad con el servidor.



Para un control que no sea ASP.NET, es decir, controles HTML como div, table, td, tr , etc., primero debe hacer que sean un control del servidor, asignar una ID y luego asignar una propiedad desde el código del servidor:

Página ASPX

<head> <style type="text/css"> .top_rounded { height: 75px; width: 75px; border: 2px solid; border-radius: 5px; -moz-border-radius: 5px; /* Firefox 3.6 and earlier */ border-color: #9c1c1f; } </style> </head> <body> <form id="form1" runat="server"> <div runat="server" id="myDiv">This is my div</div> </form> </body>

Página CS

myDiv.Attributes.Add("class", "top_rounded");


Y si:

<asp:Button ID="Button1" runat="server" CssClass="test1 test3 test-test" />

Para agregar o eliminar una clase, en lugar de sobrescribir todas las clases con

BtnventCss.CssClass = "hom_but_a"

mantener el HTML correcto:

string classname = "TestClass"; // Add a class BtnventCss.CssClass = String.Join(" ", Button1 .CssClass .Split('' '') .Except(new string[]{"",classname}) .Concat(new string[]{classname}) .ToArray() ); // Remove a class BtnventCss.CssClass = String.Join(" ", Button1 .CssClass .Split('' '') .Except(new string[]{"",classname}) .ToArray() );

Esto asegura

  • Los nombres de clase originales permanecen.
  • No hay nombres de clase dobles
  • No hay espacios extra molestos

Especialmente cuando el desarrollo del lado del cliente usa varios nombres de clase en un elemento.

En tu ejemplo, usa

string classname = "TestClass"; // Add a class Button1.Attributes.Add("class", String.Join(" ", Button1 .Attributes["class"] .Split('' '') .Except(new string[]{"",classname}) .Concat(new string[]{classname}) .ToArray() )); // Remove a class Button1.Attributes.Add("class", String.Join(" ", Button1 .Attributes["class"] .Split('' '') .Except(new string[]{"",classname}) .ToArray() ));

Deberías envolver esto en un método / propiedad;)


<div runat="server"> está asignado a un HtmlGenericControl . Intenta usar BtnventCss.Attributes.Add("class", "hom_but_a");


Button1.CssClass += " newClass";

Esto no borrará tus clases originales para ese control. Prueba esto, debería funcionar.