¿Cómo se modifica un estilo CSS en el código detrás del archivo para divs en ASP.NET?

96

Estoy tratando de modificar un atributo de estilo CSS para un div en función de la información que obtengo de una tabla de base de datos en el código detrás de mi página aspx. Lo siguiente es esencialmente lo que estoy tratando de hacer, pero obtengo errores.

Aspx:

<div id="testSpace" runat="server">
    Test
</div>

Código detrás:

testSpace.Style = "display:none;"    
testSpace.Style("display") = "none";

¿Qué estoy haciendo mal?

EverTheLearner
fuente

Respuestas:

155
testSpace.Style.Add("display", "none");
Andy White
fuente
6
testSpace.Attributes.Add ("estilo", "pantalla: ninguno;"); también funcionaría.
Robert C. Barth
2
No estoy tan seguro, Robert, creo que esta línea reemplazará el estilo existente con el nuevo en lugar de fusionar ambos estilos.
Necriis
1
De manera útil, esto reemplaza un estilo existente, por ejemplo, es posible que desee cambiar completamente un atributo de clase.
Andrew Morton
74

Es un HtmlGenericControl, por lo que no estoy seguro de cuál es la forma recomendada de hacerlo, por lo que también puede hacer:

testSpace.Attributes.Add("style", "text-align: center;");

o

testSpace.Attributes.Add("class", "centerIt");

o

testSpace.Attributes["style"] = "text-align: center;";

o

testSpace.Attributes["class"] = "centerIt";
nickytonline
fuente
15

Otra forma de hacerlo:

testSpace.Style.Add("display", "none");

o

testSpace.Style["background-image"] = "url(images/foo.png)";

en vb.net puedes hacerlo de esta manera:

testSpace.Style.Item("display") = "none"
Nikolaj Zander
fuente
Tuve problemas para usar testSpace.Style.Item("display") = "none";un control de etiqueta en .NET 4.0. Recibí el error 'System.Web.UI.CssStyleCollection' does not contain a definition for 'Item' . . . . ¿Es eso específico de una versión de .NET en particular?
Adam Miller
1
lo siento. el primero fue el enfoque de VB.net. editaré mi respuesta
Nikolaj Zander
0

Si está newcreando un elemento con sintaxis de inicializador , puede hacer algo como esto:

var row = new HtmlTableRow
{
  Cells =
  {
    new HtmlTableCell
    {
        InnerText = text,
        Attributes = { ["style"] = "min-width: 35px;" }
    },
  }
};

O si usa CssStyleCollectionespecíficamente:

var row = new HtmlTableRow
{
  Cells =
  {
    new HtmlTableCell
    {
        InnerText = text,
        Style = { ["min-width"] = "35px" }
    },
  }
};
killa-byte
fuente