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?

Antworten:


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

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";

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"

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" }
    },
  }
};
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.