网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > ASP.Net精品代码 > 正文

asp.net运行时动态修改主题

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

这个有很多种方法我在这里写几个吧
方式一:
在页面的PreInit事件中直接设置。该方法可实现不同页面加载不同主题,如果要实现网站整体换肤,只需要创建一个从System.Web.UI.Page类派生的子类,在该类的PreInit事件中加载特定主题,最后所有页面继承自此类即可。

  1. protected override void OnPreInit(EventArgs e) 
  2.     //这里是要换的主题的名称 
  3.     this.Theme="MyTheme"
  4.     base.OnPreInit(e); 

其中“MyTheme”为主题名,可从外部文件或数据库加载,以实现主题设置的持久化。
==================================================================================
方式二:
在global.asax中捕获HttpApplication的PreRequestHanderExecute事件
在事件中为Page的PreInit事件添加处理程序
global.asax中的代码如下

  1. void Application_PreRequestHandlerExecute(object src,EventArgs e) 
  2.     Page page=this.Context.Handler as Page; 
  3.     if(page!=null
  4.     { 
  5.        page.PreInit+=new EventHandler(page_PreInit); 
  6.     } 
  7.  
  8. void Page_PreInit(object sender,EventArgs e) 
  9.     Page page=this.Context.Handler as Page; 
  10.     if(page!=null
  11.     { 
  12.        page.Theme="MyTheme"
  13.     } 

================================================
方法三:
运行时修改配置文件

  1. 首先导入命名空间:using System.Web.Configuration; 
  2.  
  3. 接着用如下代码修改web.config文件的pages配置节: 
  4.  
  5.         string configPath = "~";              //表示根目录 
  6.         Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath); 
  7.         PagesSection pages = (PagesSection)config.GetSection("system.web/pages"); 
  8.         pages.Theme = DDLTheme.SelectedValue;       //修改主题,我根据DropdownList回发修改主题。 
  9.         config.Save(); 
  10.  
  11. 不过有一个问题:由于修改了web.config文件,session会丢失,如果用session判断用户是否在线,就会导致修改主题后必须重新登陆。 
  12.  
  13. 解决办法:先把session的内容放到cookie里,修改后再读取到session里。办法比较笨,如果用户浏览器不支持或者禁用了cookie,这个办法就无效了,那就只好重新登录了。不知有没更好的解决办法。 

 

设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师