Search code examples
asp.netcsscustom-controlsstylesheet

Linking a CSS Stylesheet with an ASP.NET Custom Control


I'm developing a custom control which is a composition of tables and buttons. I also have an external CSS stylesheet that defines the styles for these elements.

The Control's type is CompositeControl, under namespace MyControls and the definition of the class is in a class file CompositeControl.cs and the dll file generated is named MyControls.dll

The stylesheet is called styles.css and is in the same folder as CompositeControl.cs

For each control (Button, TableCell, etc.), I have specified the CssClass property.

When I add this control to my ASP.NET webpage and check the HTML source when run at localhost, I see all the control tags have the class attribute correctly set, but the source doesn't include the <link> tag which is necessary for including an external stylesheet.

Could someone tell me what else I need to do to make this work? Thanks.


Solution

  • External source files are not included to the page automatically. You should register them manually within your control to your page :

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

    Also try to use ClientScriptManager.GetWebResourceUrl to get location of your embedded resource. Here is an example of referencing an embedded resource.