Themeing and Master Pages

Posted by Jeff on Stack Overflow See other posts from Stack Overflow or by Jeff
Published on 2010-03-17T18:42:13Z Indexed on 2010/03/17 18:51 UTC
Read the original article Hit count: 464

Filed under:

I have the requirement to support themeing of my site's pages. The way I am doing this is by dynamically choosing a master page based on the current theme.

I have setup a directory structure like so

/shared/masterpages/theme1/Master1.master /shared/masterpages/theme1/Master2.master /shared/masterpages/theme1/Master3.master

/shared/masterpages/theme2/Master1.master /shared/masterpages/theme2/Master2.master /shared/masterpages/theme2/Master3.master

And I am still using the page directive in the view

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/shared/masterpages/theme1/Master1.Master"%>

I would still like to leverage the view's MasterPageFile property and just change the theme directory.

I can only think of three ways to do this none of them which sound great.

  1. Create a custom BaseView class that uses OnPreInit to change the theme like this
  2. Create some xml file or database table that links each view to a master page file and then set this in the controller.
  3. Build some tool that reads all the views and parses them for their masterpagefile, (similar to 2 but could be done at run time potentially.)

Option 1 seems the best option to me so far. Does anyone else have any thoughts on how to do this?

© Stack Overflow or respective owner

Related posts about asp.net-mvc