当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET FORUMS换肤流程

ASP.NET
asp.net 产生随机颜色实现代码
asp.ent(C#)中判断空字符串的3种方法以及性能分析
asp.net 基于forms验证的目录角色权限的实现
ASP.NET 统计图表控件小结
asp.net 动态引用样式表代码
asp.net 获取IP的相关资料
真正的获取客户端真实IP地址及利弊分析
asp.net(c#)文件下载实现代码
asp.net 不用GridView自带删除功能,删除一行数据
asp.net forms身份验证,避免重复造轮子
asp.net 站点URLRewrite使用小记
asp.net Gridview行绑定事件新体会
asp.net MVC实现简单的上传功能
asp.net web.config加密解密方法
aspx实现的 jquery ui 的 flexgrid demo
ASP.NET Internet安全Forms身份验证方法
asp.net使用for循环实现Datalist的分列显示功能
jQuery AJax调用asp.net webservers的实现代码
ASP.NET 页面刷新和定时跳转代码整理
asp.net GridView控件鼠标移动某行改变背景颜色(方法一)

ASP.NET FORUMS换肤流程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 56 ::
收藏到网摘: n/a


换肤的大至流程如下:
以Skin-DisplayUserWelcome.ascx为例(这个是是否登陆状态显示)
1、View-ForumGroupView.ascx文件引入AspNetForums.Controls别名为Forums
2、在希望出现“是否登陆状态”显示的地方使用使用
AspNetForums.Controls.DisplayUserWelcome
3、在DisplayUserWelcome类中要做
A、设定皮肤的名称skinFilename
B、重写InitializeSkin(Control skin)函数,用于实现皮肤上的控件
C、如果与SkinnedForumWebControl类的CreateChildControls()进行的操作有所区别,还需要
重写CreateChildControls(),不过可以只写出区别部分,然后用base调用。
D、如果控件存在事件,还需要编写事件

4、在皮肤中需要设定控件显示的布局,控件名称应该与DisplayUserWelcome类中实现的控件名称相同
在换肤过程中SkinnedForumWebControl类是至关重要的一个类,他通过实现INamingContainer接口来区分
控件,通过重写CreateChildControls()来复合控件。
注明:CreateChildControls()在默认情况下会被OnPreRender()调用,也会在FindControl()调用
OnPreRender()/*会在页面呈现时之前会调用*/
FindControl()/*查找某一控件*/
目前我在AspNetForums只发现了三种类别的皮肤,
1、MasterPage.ascx为代表的总框架皮肤
2、View-ForumGroupView.ascx为代表的皮肤容器
3、Skin-DisplayUserWelcome.ascx为代表的功能皮肤


那么如果你想改变一页面中某一个块的位置,那么你应该去修改皮肤容器,如果要改变的是某一块内部的布局则需要修改功能皮肤

在default.aspx中大约用到了如下几个用户控件

delfault.aspx
View-ForumGroupView.ascx//首页的整体布区

Skin-LoginSmall.ascx//登陆那一块

Skin-NavigationMenu.ascx//菜单
Skin-Banner.ascx//自定义,位置处在菜单的上方
Skin-DisplayUserWelcome.ascx//状态
Skin-DisplayTitle.ascx//声明
Skin-Statistics.ascx//统计信息
Skin-WhoIsOnline.ascx//在线信息
Skin-DisplayLegendForum.ascx//论坛图例
MasterPage.ascx