源代码首页源码分类源码排行源码更新洪越资讯 源码发布 分站待续
洪越源代码
ASP源代码 CGI源代码 PHP源代码 JSP源代码 其它源代码 常用工具 服务器类 书籍教程 网页模板 网站素材 字体下载
您的位置:首页 >> 其它源代码 >> .NET源代码 >> 其他类别>>母板页(MasterPage)中设置主题(附程序详解)
  分类广告
  本类下载排行

·桃源网络硬盘.Net v5.3

·设备管理系统(SQL体验版)

·asp.net的电影网站系统

·COCOON IP查询器 v1.1

·悦动音乐程序 v2.1 bulid 081020

·域名IP查询系统 v2.0

·hvsoft search builder 2.0

·拓文asp.net网站内容管理系统 v6.1

·磁盘管理系统(DiskExpert) v2.0

·用C#轻松实现缩略图(源文件)
  总下载排行榜

·ACDSee v8.0.39简体中文绿色纯净版!(免英文版、免激活)

·Photoshop CS2 9.0 绿色中文增强版

·Photoshop CS2 v9.0 中文优化版(晚上上传)

·卡巴小助手 V5.3 支持病毒库的位置自定义、支持KAV/KIS 简体中文绿色免费版

·企业网站全站源码

·SolidConverterPDF PRO(超酷PDF转换WORD工具) v3.0 绿色特别版

·一个漂亮的公司全站

·Photoshop CS2 9.0 绿色版

·企业公司网站管理系统中英繁版

·Adobe Photoshop CS3 Extended 简体中文绿色免费版
母板页(MasterPage)中设置主题(附程序详解)
源码等级:

源码大小:39K
源码语言:简体中文
授权方式:开源版
源码类别:.NET源码 / 其他类别
运行环境:.NET环境/
源码更新:2008-11-21 14:00:40
页面刷新:2009-1-9 11:40:42
相关连接:作者或厂商主页   
下载次数:76 次
源码介绍:

ASP.Net 提供了主题皮肤这个东西,其实也就是换肤啦。可是网上有很多人说这个东西鸡肋,说这个东西在 .aspx页面中使用还行,却不能在母板页(MasterPage)中使用。是的,确实不能直接在MasterPage通过一个DDL的选择来切换整个网站的主题,因为 Page.Theme 这个属性都是在PreInit(){}中设置,否则报错,而MasterPage是不执行PreInit() 。
我做的这个实例希望能够帮大家解决这个问题。为是大家能更好的理解我这个源码,下面简单介绍一下。
首先说下思路:我们的目的是要在MasterPage放个DropDownList,通过切换DropDownList ,(我这里没有用DropDownList,而是用Css模拟一个“DropDownList” 其中的每个项里放了一个LinkButton,每个LinkButtond的PostBackUrl的值都形如:"~/ThemeTool.aspx?Theme=主题名称" )来改变整个网站的主题 ,而不是只改变当前页面,就跟Discuz ! 的那个一样,所以这个改变是全局的,但是是针对于当前线程的,即A用户改变了主题,只对A有效,对B用户没有影响,所以我们不会动到配置文件,那我们很快想到的就是session ,对的,我们要把主题的名称放到session里 ,如Session["Theme"]="Blue" ;这样每个页面 只要在Page_PreInit()里去获取该Session的值,并赋给该页面的Page.Theme属性,就OK了。
当我们改变了"DropDowList"的选项,在我这里实际上是点击了不同的Linkbutton,也就是要改变主题的名称了,也就是要改变Session["Theme"]的值了,这个“改变”的在哪里执行呢?这是很关键的,是在LinkButton_Click()里吗?不是,因为重新获取Page.Theme必须在Page_PreInit()里,而LinkButton_Click()是发生得很晚的,还在Load之后,更别说PreInit()了,所以我在这里是将它跳转到ThemeTool.aspx里处理的,处理完了再重定向到原页面,这样就达到了在原页面PreInit()之前改变了Session["Theme"]的值,请放心这一过程不会使ThemeTool加载到浏览器,我们看不到的,我们只是借用了它的Page_PreInit(),用完立马就走了,哈哈!!
好了,思路就这样,下面再介绍下三个文件:
1、MasterPage.master ,在这个文件里值得说的就是我那用Css模拟的"DropDownList" , 该"DropDownList" 的每个项里都有个LinkButton ,每个LinkButtond的PostBackUrl的值都形如:"~/ThemeTool.aspx?Theme=主题名称"  ,这样每次改变"DropDownList" 的选项就会向ThemeTool.aspx传去了新的Theme值,再由ThemeTool.aspx处理将这个新的Theme值存入Session。
2、在App_Code文件夹里有个ThemeSkin.cs文件,里面写了两个静态方法:GetTheme(Page P) 和GetTheme(Page P),其中GetTheme(Page P)用来获取主题,这个方法在网站的每一个需要有主题的页面(我这里就是Default.aspx 和Default2.aspx l了)的Page_PreInit()里被调用,参数P 是指调用该方法的页面,是个Page类型的对象;ChangeTheme()用来切换主题,在ThemeTool.aspx.cs的Page_PreInit()里被调用。
3、根目录里的ThemeTool.aspx这个页面也是很重要的,主题的切换就是在它的Page_PreInit里搞定的,谁叫MasterPage不执行PreInit呢 ^_^  。里面的代码很简单,不信你去看。

立即下载:

 迅雷专用高速下载
母板页(MasterPage)中设置主题(附程序详解)

相关源码:

·搜索更多与"母板页(MasterPage)中设置主题(附程序详解) "相关的软件

注意事项:
·注意:本站源码一律只用鼠标左键打开,否则将不能正常下载!
·如果出现该页无法显示,请多试几次;如果总是不能下载,请点击报告错误,谢谢!
·请一定升级到最新版[WinRAR]才能正常解压本站提供的源码;如有其它问题,欢迎发信联系管理员.
·由于网站服务器承受能力有限,请其他网站不要直接链接我们提供的源码,谢谢!!