2010-06-04 20 views
7

Opracowuję niestandardowy formant, który jest kompozycją tabel i przycisków. Mam także zewnętrzny arkusz stylów CSS, który definiuje style dla tych elementów.Łączenie arkusza stylów CSS z formantem niestandardowym ASP.NET

typu kontrola jest CompositeControl, pod nazw MyControls i definicja klasy jest w pliku klasy CompositeControl.cs oraz plik DLL generowane nazwie MyControls.dll

Arkusz stylów nazywa się styles.css i jest w tym samym folderze co CompositeControl.cs

Dla każdej kontrolki (Button, TableCell itd.) mam specyfikację d właściwość CssClass.

Kiedy dodaję tę kontrolkę do mojej strony ASP.NET i sprawdzam źródło HTML po uruchomieniu na localhost, widzę, że wszystkie znaczniki kontrolne mają poprawnie ustawiony atrybut klasy, ale źródło nie zawiera znacznika <link>, który jest konieczne do włączenia zewnętrznego arkusza stylów.

Czy ktoś mógłby mi powiedzieć, co jeszcze muszę zrobić, aby to zadziałało? Dzięki.

Odpowiedz

7

Zewnętrzne pliki źródłowe nie są automatycznie dołączane do strony. należy zarejestrować je ręcznie w swojej kontroli na swojej stronie:

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

spróbować także użyć ClientScriptManager.GetWebResourceUrl dostać lokalizację osadzonego zasobu. Oto an example odwoływania się do osadzonego zasobu.

+0

Dzięki. Zadziałało. –

+0

Po użyciu GetWebResourceUrl arkusz stylów nie jest łączony. –

+0

@wacky_coder: Tak, widzę teraz problem, pierwszy parametr, parametr typu, powinien być kontenerem zasobu. W tym przypadku typ kontrolki. – Canavar

Powiązane problemy