DNN 頁面生成運作方法相當複雜,非三言兩語講完。以下為我探尋脈絡,望助研究 DNN 朋友,文字較抽象,後續將貼出關鍵程式碼詳盡說明。
HttpModule` 為起點,攔截 HTTP 請求,Application_BeginRequest` 事件中處理 URL Rewrite 取得 tabId`、`portalAliasInfo`,透過兩參數生成 PortalSettings` 物件取得 Portal 與當前 Tab 資訊,存入 Context` 物件備用。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` 事件載入模組資料。