2010-06-04 20 views
7

Ich entwickle ein benutzerdefiniertes Steuerelement, das aus Tabellen und Schaltflächen besteht. Ich habe auch ein externes CSS-Stylesheet, das die Stile für diese Elemente definiert.Verknüpfen eines CSS-Stylesheets mit einem benutzerdefinierten ASP.NET-Steuerelement

Der Typ des Control ist Composite unter Namespace MyControls und die Definition der Klasse in einer Klassendatei CompositeControl.cs und die DLL-Datei erzeugt MyControls.dll

Die benannt Stylesheet heißt styles.css und befindet sich im selben Ordner wie CompositeControl.cs

Für jedes Steuerelement (Button, TableCell, etc.), habe ich spezifies d die CssClass Eigenschaft.

Wenn ich dieses Steuerelement zu meiner ASP.NET-Webseite hinzufügen und die HTML-Quelle bei der Ausführung auf localhost überprüfen, sehe ich, dass alle Steuerelement-Tags das Klassenattribut korrekt gesetzt haben, aber die Quelle enthält nicht das <link>-Tag notwendig für die Aufnahme eines externen Stylesheets.

Kann mir jemand sagen, was ich noch tun muss, damit das funktioniert? Vielen Dank.

Antwort

7

Externe Quelldateien werden nicht automatisch zur Seite hinzugefügt. Sie sollten sie manuell in Ihrer Kontrolle zu Ihrer Seite registrieren:

HtmlLink cssSource = new HtmlLink(); 
cssSource.Href = Page.ClientScript.GetWebResourceUrl(this.GetType(), "styles.css"); 
cssSource.Attributes["rel"] = "stylesheet"; 
cssSource.Attributes["type"] = "text/css"; 
Page.Header.Controls.Add(cssSource); 

versuchen auch ClientScriptManager.GetWebResourceUrl zu verwenden Speicherort Ihrer eingebettete Ressource zu erhalten. Hier ist an example der Verweis auf eine eingebettete Ressource.

+0

Danke. Es funktionierte. –

+0

Nach der Verwendung von GetWebResourceUrl wird das Stylesheet nicht verknüpft. –

+0

@wacky_coder: Ja, ich sehe jetzt das Problem, der erste Parameter, Typ Parameter, sollte der Container der Ressource sein. In diesem Fall geben Sie den Typ Ihrer Kontrolle ein. – Canavar

Verwandte Themen