Como você modifica um estilo CSS no arquivo code-behind para divs no ASP.NET?

96

Estou tentando modificar um atributo de estilo CSS para um div com base nas informações que obtenho de uma tabela de banco de dados no código por trás da minha página aspx. O que se segue é essencialmente o que estou tentando fazer, mas recebo erros.

Aspx:

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

Código por trás:

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

O que estou fazendo de errado?

EverTheLearner
fonte

Respostas:

155
testSpace.Style.Add("display", "none");
Andy White
fonte
6
testSpace.Attributes.Add ("style", "display: none;"); também funcionaria.
Robert C. Barth,
2
Não tenho tanta certeza, Robert, acho que esta linha substituirá o estilo existente pelo novo em vez de mesclar os dois estilos.
Necriis
1
De forma útil, isso substitui um estilo existente, por exemplo, você pode querer mudar completamente um atributo de classe.
Andrew Morton
74

É um HtmlGenericControl, portanto, não tenho certeza de qual é a maneira recomendada de fazer isso, então você também pode fazer:

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

ou

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

ou

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

ou

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

Outra maneira de fazer isso:

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

ou

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

em vb.net você pode fazer desta forma:

testSpace.Style.Item("display") = "none"
Nikolaj Zander
fonte
Tive problemas ao usar testSpace.Style.Item("display") = "none";em um controle de rótulo no .NET 4.0. Eu entendi o erro 'System.Web.UI.CssStyleCollection' does not contain a definition for 'Item' . . . . Isso é específico para uma determinada versão do .NET?
Adam Miller
1
sinto muito. o primeiro foi a abordagem VB.net. vou editar minha resposta
Nikolaj Zander,
0

Se você estiver newcriando um elemento com sintaxe de inicializador , poderá fazer algo assim:

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

Ou se estiver usando CssStyleCollectionespecificamente:

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