Here’s my code that I’ve been using for implementing “Themes” in ASP.NET MVC:
ASP.NET MVC: Implement Theme Folders using a Custom ViewEngine
It’s nice when you’re able to just swap out CSS files to change the theme, but this really isn’t very practical in a ton of cases. Especially when each theme needs to have a completely different layout. In which case, you need to change the CSS and HTML that gets rendered, and this is why I wrote the code found at the above link.