頁面側邊欄的模組化功能區塊:分類列表、行事曆、標籤雲等。統一開發標準,即插即用。
UserControl,重寫 Render 產生統一外框 (標題、編輯按鈕、內容區)。抽象方法 LoadWidget 初始化內容。IsEditable 決定是否顯示編輯鈕。GetSettings 從 DataStore 讀取設定並快取。Save 方法持久化設定,提供 Saved 事件。/widgets/{WidgetName}
widget.ascx (.cs) // 繼承 WidgetBase
edit.ascx (.cs) // 繼承 WidgetEditBase (若 IsEditable=true)
public override void LoadWidget()
{
var settings = GetSettings();
if (settings.ContainsKey("content"))
Controls.Add(new LiteralControl(settings["content"]));
}
public override string Name => "TextBox";
public override bool IsEditable => true;
編輯介面 edit.ascx 提供文字區編輯內容,Save 寫回 DataStore。
/widgets 目錄,實例化各 Widget 控制項加入側邊欄 PlaceHolder。DataStore 統一序列化儲存 (XML/DB)。Widget 以「基類契約 + 目錄慣例」實現高度模組化側邊欄,開發者可快速新增功能區塊無須修改核心代碼。