用Asp.net的话,最简单的应该是使用模板引擎,例如Razor。每一个模板(确切的说,叫主题,Theme),每一个Theme对应了不同的CSS,和HTML Templetes。假如有两个主题,分别存放于两个目录:Blue,Green,然后有固定的文件结构(非固定的也可以,通过XML进行配置)。比如,Blue下有Style.css,js文件,footer.html,banner.html,甚至于把每个模块都划分成单独的html templetes,同时,Green下也有。asp.net当中,你做一个生成工具,可以根据Templetes生成一个完整的模板页面,然后实际加载页面的时候,就根据生成的页面去填充数据即可,你如果想知道大概的原理,可以看看Dizcuz.net的实现,它好像是开源的,其中就有模板替换。另外一种方式比较简单,完全又CSS来控制,asp.net页面只需要动态的控制要加载的css即可。
最后就是利用缓存功能来提供模板的加载速度,这点非常重要!
我以前就是做模板切换的,这个主要是在CSS文件里控制的,先是设计模板样式,选中后利用XML文件替换