I love Twitter – you get some though provoking questions on it. Thomas Resing asked the other day:
How are you applying styles to your custom web parts in #SharePoint? using CSSClass property, stuck on deploying css <Link> tag in the head
Well, for pages themselves you have the CSSRegistration control. It’s an ASP.NET control, and looks something like:
<SharePoint:CssRegistration name="/_layouts/myBrand/SomeStyle.css" runat="server"/>
This control registers the URL with the page, but doesn’t emit anything. That’s controlled by the CssLink control:
<Sharepoint:CssLink runat="server" />
It actually outputs the <link> elements, and this means that you can have a CSSRegistration control low down in the page (in a Content control, for example) and you can still output it in the <head> of your page. There’s a good post about this on CleverWorkarounds.
So, could we use that control? Well, we should be able to instantiate one – except it turns out that we don’t have to. We can just use the CSSRegistration.Register() static method – something like:
protected override void CreateChildControls(){
CssRegistration.Register("/_layouts/myBrand/SomeStyle.css");
}
Job done…