Using ASP.NET Theme’s in MOSS 2007

MOSS 2007 has it’s own theming engine, separate from the ASP.NET theming engine. A downside of the MOSS approach is that you require an IIS reset to change a theme. Not very nice, so we wanted to use ASP.NET theming instead. This however causes problems with all pages in the _layouts folder, because they don’t have <header runat=”server” />. That tag is necessary, because ASP.NET needs to add CSS references and such to the <head> tag. Without that tag you receive the following error message:


Using themed css files requires a header control on the page


The solution is to define no theme for the pages in the _layouts folder. Since the pages in that folder are mainly dialog-type screens for SharePoint operations, this is not a problem from a look & feel perspective. That said, there are situations where you create your own pages and put the in the _layouts folder. For those pages you can apply a theme, providing there are no (MOSS) webparts and such on the page. In web.config this would look something like this:

<location path=”_layouts”>
  <system.web>
    <pages theme=”” />
  </system.web>
</location>
<location path=”_layouts/MyCustomPage.aspx”>
  <system.web>
    <pages theme=”MyTheme” />
  </system.web>
</location>

Leave a Reply

Your email address will not be published. Required fields are marked *