代码改变世界

Asp.Net主题/皮肤切换,以及遇到的两个问题

2011-02-17 09:32  佳明  阅读(1967)  评论(9编辑  收藏  举报

还是直接上源码吗吧

源代码:/Files/lmm1508561/源码下载/2010216Theme.rar

 

很简单的例子,初级程序员都能看的懂,我这里就不介绍了。很简单的代码

 

 

代码
    /// <summary>
    
/// 
    
/// </summary>
    
/// <param name="sender"></param>
    
/// <param name="e"></param>
    protected void Page_PreInit(object sender, EventArgs e)
    {
        
// 是否为空
        if (Session["Theme"== null)
        {
            
// 默认主题
            this.Theme ="Default";
        }
        
else
        {
            
// 当前选择的主题
            this.Theme = Session["Theme"].ToString();
        }
    }

 

 

  

我把我在开发时用到主题皮肤切换时遇到的问题将一下,相信大家以后遇到这类的问题,就不用动找西找了。

问题1:当页面Head 里面的服务器标记 runat="server" 被去掉时,你的主题皮肤加载时将会失效。

解决方法: runat="server" 必须存在

 

 问题2:当页面都是继承BasePage 时,我们想通过直接在基类页面直接加载,不需要每个页面都要写一遍,这时我们又将基类页面的 protected override void OnPreInit(EventArgs e) 这个方法重写了,我们需要页面初始化时需要加载其他的也谢配置信息之类的什么的,这时问题就要存在了,页面上的样式也会失效。

解决方法 : 加上  base.OnPreInit(e); 这句就OK了