7

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.

1 Answer 1

7

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.

Sign up to request clarification or add additional context in comments.

4 Comments

After using GetWebResourceUrl, the stylesheet doesn't get linked.
@wacky_coder : Yeah I see now the problem, the first parameter, type parameter, should be the container of the resource. In this case your control's type.
I had already tried it before even posting here. It simply didn't work. Did I miss anything? Do I need to do anything else for this method to work?
The resource gets embedded into the DLL but the webpage can't find it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.