探索ASP.NET Forum皮肤主题的更换

原创 2007年09月23日 11:05:00
 

HTML Tags and JavaScript tutorial



探索ASP.NET Forum皮肤主题的更换




还记得duwamish吗?在那里面,一些页面由用户控件组成,而其所承担的逻辑处理都是在控件内部完成的,这样是把控件做为单独的逻辑模块使用。在forum里,我们又看到了这种处理方法,并且,更加的复杂和灵活,用来实现皮肤主题的更换。
通过前面的两篇笔记,已经大致了解了forum的控件使用,下面就做一次该方面的总结。(广告时间:之所以先关注这个,是因为我想把下一版的stella里使用这种模式。请大家期待大概两个星期后完成的Stella Forum V 1.2)
在forum中,页面由“模块控件”(我自己起的名字,呵呵)组成,这些模块控件其实是
由负责呈现内容的的用户控件和负责进行逻辑处理的自定义空间共同组成
的。这样的隔离处理是为了可以方便的更换用户控件达到更换皮肤的目的,逻辑操作都一样,所以后面的自定义控件就不需要改动。还有比较重要的是,页面上标记的都是自定义控件,这个也不会因皮肤的更换而修改。
实际上,forum里的页面和用户控件很少有codebehind的代码,因为逻辑即处理都交给自定义控件了。这样可以达到一种即插即用的效果,比如那个登陆模块,你可以随心的放到任何地方,而不用修改页面处理代码。
主题文件都放在统一的目录下,加载的时候会直接到该目录下找相应的文件。
拿登陆控件来分析,主要设计这三个控件:
Skin-Login.ascx
AspNetForums.Controls.Login
AspNetForums.Controls.SkinnedForumWebControl
Skin-Login提供了登陆时需要呈现的html,包括文本框、按钮等,Login用来初始化Login并对提交事件进行处理,SkinnedForumWebControl是Login的基类,主要作用是动态加载需要使用的用户控件。
CreateChildControls方法扮演了重要的角色,SkinnedForumWebControl里有两个方法LoadSkin和 InitializeSkin都是在CreateChildControls被使用。详细的说,先是LoadSkin加载要使用的用户控件,然后在 InitializeSkin里对这个控件进行初始化。注意InitializeSkin是vietual的,这个方法的实现主要是在个各子类(也就是具 体的自定义控件,在这里是Login)。在InitializeSkin重要的是对各种事件的订阅,比如登陆时要点按钮,对点击事件的订阅就在这里。过程 就是先用FindControl找到相应的控件,然后在处理。
要加载的具体控件是在子类中先定好,然后在基类中加载。CreateChildControls的触发顺序是先子类后基类。
系统怎么知道该加载哪个主题?这个一开始有个默认设置,然后用户可以自己更改需要的主题。在用户控制面板中可以看到该选项。
接下来的问题,在用户面板中可以选择需要哪个主题,那系统是怎么知道都有哪些主题?我们可以看提供选择的那个控件是AspNetForums.Controls.ThemeDropDownList,在该控件里完成了该项功能,在这里给出一行代码:
string[] dirs = Directory.GetDirectories( context.Request.PhysicalApplicationPath + ForumConfiguration.GetConfig().ForumFilesPath + "//themes" );
这样,forum是直接到themes文件夹下看有哪些主题包,然后显示出来供选择。大家可以到官网
http://bbs.hidotnet.com
/ 下一个主题包,然后直接解压到这个文件夹,这样新的主题就可以用了。刚才我下了那个龙翔的主题,也没有看安装说明什么的,直接就把里面的default文 件夹改名成lxSkin,然后放到themes里,就直接可以用了,用户在选择的时候会看到两个选择default和lxSkin。 
 


轻松实现Android 更换皮肤(主题)

目前很多app都具有换肤功能,可以根据用户自己的喜好定制自己的界面,比如新浪微博,网易新闻等等。今天这里我就是要介绍一种机制实现app换肤。 我找了几款app换肤的应用,换肤基本都是更换了界面的...
  • qqiabc521
  • qqiabc521
  • 2015年03月03日 18:22
  • 2382

轻松实现Android 更换皮肤(主题)

目前很多app都具有换肤功能,可以根据用户自己的喜好定制自己的界面,比如新浪微博,网易新闻等等。今天这里我就是要介绍一种机制实现app换肤。 我找了几款app换肤的应用,换肤基本都是更换了界面的Ico...
  • yuanzeyao2008
  • yuanzeyao2008
  • 2015年01月04日 14:17
  • 9181

[ExtJS5学习笔记]第二十九节 sencha ext js 5.1.0中动态更换皮肤主题

sencha ext js 动态更换皮肤 主题
  • sushengmiyan
  • sushengmiyan
  • 2014年12月18日 23:52
  • 8283

android 换主题换皮肤(apk包方式)

从形式上来讲,有在当前主工程中提供不同主题样式资源名称(使用时只去选择对应的资源名称即可),也有在主题包中提供与主工程相同资源名字(apk形式、自定义压缩包形式)。或更换当前页面也可更换整个工程的全部...
  • xue_wei_love
  • xue_wei_love
  • 2015年04月10日 16:08
  • 3818

Sublime Text主题皮肤安装与切换使用方法

方法一:手动下载安装: 1.下载安装SublimeText2,这个我就不说了。网上的版本有多个,可以自行选择。也可下载使用最新的SublimeText3. 2.从github上下载...
  • a7282787
  • a7282787
  • 2015年07月18日 16:09
  • 5673

asp.net主题文件(css+.skin)的使用

一、简介:     关于主题文件的创建,请参看本博客http://blog.sina.com.cn/s/blog_67aaf4440100nl5k.html   利用Themes我们可以很容易的更...
  • freebirds_zh
  • freebirds_zh
  • 2015年12月11日 09:16
  • 1110

java_easyui体系之更换主题

摘要: 本文一步一步的说明如何更换easyui的主题、不仅包括easyui自带的两个主题、还有扩展的四个easyui主题插件的使用、同时又使用的jquery的cookies插件来保存用...
  • chenghuaying
  • chenghuaying
  • 2014年01月08日 16:18
  • 12815

ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?

http://www.stepday.com/my.stepday/?echarts
  • fendou123_love
  • fendou123_love
  • 2014年10月09日 15:37
  • 2886

iOS App主题皮肤切换功能简介和具体实现详解 附有源码

1. 主题皮肤功能切换介绍 主题切换就是根据用户设置不同的主题,来动态改变用户的界面,通常会改变 navigationBar背景图片、 tabBar背景图片、 tabBar中的按钮的图片和选中的背景图...
  • vbirdbest
  • vbirdbest
  • 2016年01月28日 15:35
  • 6649

Android Studio 自定义皮肤主题和背景

转自:http://mp.weixin.qq.com/s/vuowHh75yF5gv1m0CeVkpw?ref=myread Android Studio 自定义皮肤主题和背景 新...
  • yueguanyun
  • yueguanyun
  • 2017年02月06日 16:27
  • 1491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:探索ASP.NET Forum皮肤主题的更换
举报原因:
原因补充:

(最多只允许输入30个字)