Wie ändere ich einen CSS-Stil im Code hinter der Datei für divs in ASP.NET?

96

Ich versuche, ein CSS-Stilattribut für ein Div basierend auf den Informationen zu ändern, die ich aus einer Datenbanktabelle im Code hinter meiner Aspx-Seite erhalte. Das Folgende ist im Wesentlichen das, was ich versuche, aber ich bekomme Fehler.

Aspx:

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

Code dahinter:

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

Was mache ich falsch?

EverTheLearner
quelle

Antworten:

155
testSpace.Style.Add("display", "none");
Andy White
quelle
6
testSpace.Attributes.Add ("style", "display: none;"); würde auch funktionieren.
Robert C. Barth
2
Nein, Robert, ich denke, diese Linie wird den vorhandenen Stil durch den neuen ersetzen, anstatt beide Stile zusammenzuführen.
Necriis
1
Nützlicherweise ersetzt dies einen vorhandenen Stil, z. B. möchten Sie möglicherweise ein Klassenattribut vollständig ändern.
Andrew Morton
74

Es ist ein HtmlGenericControl, daher sind Sie sich nicht sicher, wie dies empfohlen wird. Sie können also auch Folgendes tun:

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

oder

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

oder

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

oder

testSpace.Attributes["class"] = "centerIt";
Nickytonline
quelle
15

Ein anderer Weg, es zu tun:

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

oder

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

In vb.net können Sie dies folgendermaßen tun:

testSpace.Style.Item("display") = "none"
Nikolaj Zander
quelle
Ich hatte Probleme bei der Verwendung testSpace.Style.Item("display") = "none";eines Label-Steuerelements in .NET 4.0. Ich habe den Fehler bekommen 'System.Web.UI.CssStyleCollection' does not contain a definition for 'Item' . . . . Ist das spezifisch für eine bestimmte .NET-Version?
Adam Miller
1
tut mir leid. Der erste war der VB.net-Ansatz. Ich werde meine Antwort bearbeiten
Nikolaj Zander
0

Wenn Sie newein Element mit Initialisierersyntax erstellen , können Sie Folgendes tun:

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

Oder wenn Sie die CssStyleCollectionspeziell verwenden:

var row = new HtmlTableRow
{
  Cells =
  {
    new HtmlTableCell
    {
        InnerText = text,
        Style = { ["min-width"] = "35px" }
    },
  }
};
Killa-Byte
quelle