ASP.NET FORUMS換膚流程
來源:互聯網
上載者:User
asp.net 換膚的大至流程如下:
以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