博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多外观网站解决方案讨论
阅读量:4978 次
发布时间:2019-06-12

本文共 1082 字,大约阅读时间需要 3 分钟。

需求:
    客户需要网站支持多种外观, 包括颜色, 图片以及某些页面的结构和功能. 网站的大部分内容布局和功能是一样的,但是某些页面(首页,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

你可能感兴趣的文章