DNN頁面生成的運作方法相當復雜,並非三言兩語講得完整,以下是我所尋到的脈絡,希望對研究DNN的朋友們有些幫助,文字畢竟抽象了些,以後我會接著貼出些關鍵代碼來詳盡說明。
1,得到Portal和Page信息:
HttpModule是起點,它先截取Http請求,在Application_BeginRequest 事件中,進行Url rewrite處理後得到tabId和portalAliasInfo,通過這兩個參數生成一個PortalSettings對象,取得Portal信息和當前的Tab信息。存入Context對象備用。
2,顯示Page和Modules:
Default.aspx的Page_init事件裡先取得Context對象中的Portal和Tab信息,加載他們所指定的Skin。
在Skin.vb中(a):找出PaneControl; (b): 加載ModuleControl;(c):PaneControl.Controls.Add(ModuleControl)將ModuleControl插入PaneControl.Controls。
最後在觸發ModuleControl.Page_Load事件時加載Module中的數據。