skin.vb中关于页面中模块加载的原理


主要工作都在Page_Init实现
1。首先加载ControlPanel
ctlPane.Controls.Add(objControlPanel)
2.IsAdminControl() =true ( 本质就在于ctl=null 或者 ModuleId =null)
就加载module主页面。主页面和其他页面的区别就在与controlkey=null
3.IsAdminControl() =false
就根据controlkey取该模块该key所对应的ascx


样式表的应用顺序
1.default.aspx:ManageStyleSheets()

default.css
skin.css
*sinName*.css

portal.css

2.skin.vb: InjectModule()
container.css
*ContainerName*.css

 

skin和Container加载的过程

1。在default.aspx的Page_Init():   SkinPlaceHolder.Controls.Add(ctlSkin)
2。在skin.vb的page_init():
首先:从数据库得到module的存放位置,并在当前的skin.ascx中找到对印的Panel Dim parent As Control = Me.FindControl(objModule.PaneName)

接着:InjectModule(parent, objModule, PortalSettings)

3.  InjectModule(其中 parent = objPane):


找到容器
ctlContainer = LoadContainer(objModule.ContainerSrc, objPane)

向容器的内容部分加入module
找到容器中的放module的cell
 Dim objCell As Control = ctlContainer.FindControl(glbDefaultPane)
把module放入一个临时的panel
objPanel.Controls.Add(objPortalModuleBase)
把临时的panel放入容器的contentPanel
objCell.Controls.Add(objPanel)

把容器加入道objPane
生成一个领事的容器panel,并把容器加入道这个领事的panel中
Dim ctlDragDropContainer As Panel = New Panel  objPane.Controls.Add(ctlDragDropContainer)   ctlDragDropContainer.Controls.Add(ctlContainer)
把容器加入道
objPane.Controls.Add(ctlContainer)

最后处理action
ProcessActionControls(objPortalModuleBase, ctlContainer)

转载于:https://www.cnblogs.com/zgqys1980/archive/2007/03/22/684283.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值