ASP.NET 2.0 WebPart 架構賦予使用者自訂網頁版面配置的能力:拖曳區域、最小化/關閉/還原區塊、編輯屬性、連接部件間資料流。本文介紹核心控制項 WebPartManager、WebPartZone、WebPart 基礎用法與簡易範例。
| 控制項 | 角色 | 關鍵特性 |
|---|---|---|
WebPartManager | 頁面級單一實例,管理所有 WebPart 生命週期、個人化狀態、連接、顯示模式 | DisplayMode:Browse/Design/Edit/Catalog/Connect |
WebPartZone | 版面區域容器,定義 WebPart 可放置區域,提供區域層級佈局控制 | Layout:Vertical/Horizontal,ZoneTemplate 內容模板 |
WebPart (基底) | 可個人化的內容單元,標準屬性:Title、ChromeState、ChromeType、Description、Icon | 繼承自 Panel,支援任意子控制項 |
GenericWebPart | 自動包裝普通控制項(如 Calendar、GridView)成為 WebPart | 動態建立,Title 屬性自動對應 |
<asp:WebPartManager ID="WebPartManager1" runat="server" />
<table><tr>
<td><asp:WebPartZone ID="WebPartZone1" runat="server" HeaderText="左欄"></asp:WebPartZone></td>
<td><asp:WebPartZone ID="WebPartZone2" runat="server" HeaderText="中欄"></asp:WebPartZone></td>
<td><asp:WebPartZone ID="WebPartZone3" runat="server" HeaderText="右欄"></asp:WebPartZone></td>
</tr></table>
Calendar 至 WebPartZone1 內部。Title="今天的日期"(GenericWebPart 自動產生的屬性)。瀏覽模式下,各區域右上角顯示「最小化」「關閉」「還原」動詞按鈕。使用者可拖曳區域標題列移動 WebPart 位置(跨區域)。
| 模式 | 用途 | 啟用方式 |
|---|---|---|
BrowseDisplayMode | 一般瀏覽,可最小化/關閉/移動 | 預設 |
DesignDisplayMode | 拖曳移動 WebPart 位置 | WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode |
EditDisplayMode | 編輯 WebPart 屬性(標題、外觀等) | 需 EditorZone + AppearanceEditorPart 等 |
CatalogDisplayMode | 從目錄加入新 WebPart | 需 CatalogZone + PageCatalogPart/DeclarativeCatalogPart |
ConnectDisplayMode | 建立 WebPart 間連接 | 需 ConnectionsZone |
<webParts>
<personalization defaultProvider="SqlPersonalizationProvider">
<providers>
<add name="SqlPersonalizationProvider"
type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider"
connectionStringName="LocalSqlServer"
applicationName="/MyApp" />
</providers>
<authorization>
<allow verbs="enterSharedScope" users="Admin" />
<allow verbs="modifyState" users="*" />
</authorization>
</personalization>
</webParts>
SqlPersonalizationProvider 儲存於 SQL Express aspnetdb.mdf。<asp:WebPartZone ID="Zone1" runat="server">
<ZoneTemplate>
<asp:Calendar ID="Cal1" runat="server" Title="行事曆" />
<asp:GridView ID="GvNews" runat="server" Title="最新消息" DataSourceID="sdsNews" />
</ZoneTemplate>
</asp:WebPartZone>
設計時放入 ZoneTemplate 的控制項執行時自動包裝為 GenericWebPart。
WebPartManager,置於 <form> 內最上層。WebPartZone 建議使用 CSS 版面(display: flex 或 grid)替代表格。personalization Provider,預設檔案系統 Provider 不支援多伺服器陣列。EditorZone 讓使用者自訂 WebPart 標題、圖示、說明等屬性。DeclarativeCatalogPart 定義可用 WebPart 清單,PageCatalogPart 管理已關閉 WebPart 回收筒。WebPart 架構將「門戶個人化」從複雜客製開發轉為標準控制項組合,大幅降低企業入口網站建置門檻。