多外观网站解决方案讨论

需求:
    客户需要网站支持多种外观, 包括颜色, 图片以及某些页面的结构和功能. 网站的大部分内容布局和功能是一样的,但是某些页面(首页,masterpage)的布局和功能内容每个外观都不一样(光看首页的话可能会当成不同的网站,或许要的就是这种效果 :p)。 当用户访问网站时根据不同的域名显示不同的外观。

思路:
    使用asp.net theme进行css的选择实现不同的主题。 使用url rewriting重定位某些页面达到不同外观有不同布局功能的目的。 通过运行时设置页面的masterPage改变外观的布局。
  
实现方法
    1. 在web.config中配置类似如下信息
       <portals>
          <add name="Portal1" domain="www.portal1.com">
             <masterPage url="~/MasterPage/portal1.master" />
             <theme default="~/App_Theme/portal1" />     
          </add>
          <add name="Portal2" domain="www.portal2.com">
             <masterPage url="~/MasterPage/portal2.master" />
             <theme default="~/App_Theme/portal2" />     
             <pages>
                   <add source="~/default.aspx" target="~/default-portal2.aspx" />
             </pages>
          </add>
       </portals>
    2. 使用httpModule根据Request.Url判断使用那个外观,检查请求的页面是否在<pages>进行了配置,对配置的页面进行url rewriting.
    3. 每个页面继承PageBase, PageBase中在PreInit事件中根据使用的外观决定theme和masterPage.
    4. 使用adapter替换HtmlForm,对<form>中的action进行重写
注意事项:
    重定向的页面需要在相同的目录下,否则页面中的css,image,js引用路径会出现问题。

问题:
    感觉实现了需求,但是并不优美。 theme的切换提高了对html,css设计的要求, 由于需要将重定向的页面放在一起,当外观比较多的时候,整个网站结构会比较混乱。不知道有没有更好的解决方法.

转载于:https://www.cnblogs.com/wangyh/archive/2007/10/11/920925.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值