ASP.NET 主版頁面概觀

ASP.NET 主版頁面可讓您在應用程式中為網頁建立一致的版面配置。單一主版頁面會定義應用程式中所有網頁 (或網頁群組) 的外觀和標準行為。然後,可以建立包含想要顯示內容的個別內容網頁。當使用者要求內容網頁時,它們就會跟主版頁面合併,以產生結合主版頁面配置與內容網頁內容的輸出。

主版頁面與動態網站範本

主版頁面與「動態網站範本」均可讓您在網站中的所有網頁上建立一致而能夠輕鬆更新的版面配置。若您使用 ASP.NET 檔案,請使用主版頁面為各網頁定義具有共用內容的一致外觀。若您使用 HTML 檔案,請使用「動態網站範本」。

主版頁面

動態網站範本

用於 .aspx 檔案

用於 .htm 或 .html 檔案

對網頁提出要求時,主要內容與網頁內容即會在伺服器上合併

所有網頁上的範本內容均以範本為基礎,只要範本有所更新,就必須在所有網頁上更新此內容

個別的網頁內容必須介於 <asp:contentplaceholder> 與 </asp:contentplaceholder> 標籤之間

個別的網頁內容必須介於 <!-- #BeginEditable --> 與 <!-- #EndEditable --> 標籤之間

ASP.NET 檔案使用主版頁面的好處

主版頁面可提供過去必須以下列方式才能建立的功能:重複地複製現有程式碼、文字與控制項元素;使用框架組;使用一般元素的 Inlcude 檔案;使用 ASP.NET 使用者控制項等。主版頁面包含下列優點:

  • 集中網頁的通用功能,讓您在一個位置就能進行更新。

  • 輕鬆建立一組控制項和程式碼,並將結果套用至一組網頁。例如,您可以使用主版頁面上的控制項,建立套用至所有網頁的功能表。

  • 控制預留位置控制項的呈現方式,讓您可以更細膩的控制完稿網頁的版面配置。

  • 提供物件模型,讓您可以從個別內容網頁自訂主版頁面。

主版頁面的運作方式

主版頁面實際上由兩個部分組成,主版頁面本身以及一或多個內容網頁。

主版頁面

主版頁面是副檔名為 .master 的 ASP.NET 檔案 (例如,MySite.master),其使用能夠包含靜態文字、HTML 元素和伺服器控制項的預先定義版面配置。與一般 .aspx 網頁所使用的 @ Page 指示詞不同,主版頁面由特殊的 @ Master 指示詞所識別。

除了 @ Master 指示詞以外,主版頁面也包含網頁的所有最上層 HTML 元素,例如 html、head 和 form。例如,在主版頁面上,您可能會使用 HTML 表格進行版面配置、在公司標誌中使用 IMG 元素、在著作權聲明中使用靜態文字,以及使用伺服器控制項建立網站的標準導覽。您可以使用任何 HTML 和 ASP.NET 項目當作主版頁面的一部分。

除了所有網頁上都會顯示的靜態文字與控制項以外,主版頁面也包含一或多個 ContentPlaceHolder 控制項。這些預留位置控制項定義了顯示可置換內容的區域。而內容網頁中則定義了可置換的內容。

內容網頁

您可以建立繫結至特定主版頁面的個別 ASP.NET 內容網頁 (.aspx 檔案以及選用的程式碼後置檔案),以定義主版頁面上預留位置控制項的內容。

在建立 Content 控制項後,可以在其中新增文字和控制項。

主版頁面在執行階段的行為

IIS 在執行階段會以下列順序處理主版頁面:

  1. 使用者鍵入內容網頁的 URL 以要求網頁。

  2. 擷取網頁時,會讀取 @ Page 指示詞。如果指示詞參考主版頁面,則也會讀取主版頁面。如果這是第一次要求這些網頁,就會編譯此二網頁。

  3. 更新內容的主版頁面會合併至內容網頁的控制項樹狀目錄。

  4. 個別 Content 控制項的內容,會合併至主版頁面中對應的 contentplaceholder 控制項。

  5. 合併後的網頁會呈現在瀏覽器中。

就使用者的觀點而言,合併的主版頁面與內容網頁都是單一不連續的網頁。網頁的 URL 就是內容網頁的 URL。

參考外部資源

內容網頁和主版頁面都會包含參考外部資源的控制項。例如,兩者可能都包含參考影像檔的影像控制項,或是可能包含參考其他網頁的錨定。

合併後的內容與主版頁面之內容,就是內容網頁的內容。這可能會影響指定資源 URL 的方式,例如影像檔和錨定中的目標網頁。

伺服器控制項

在主版頁面的伺服器控制項中,ASP.NET 會動態修改參考外部資源之屬性的 URL。例如,您可以將 Image 控制項置於主版頁面上,並將其 ImageUrl 屬性設定為主版頁面的相關內容。在執行階段,ASP.NET 會修改 URL 以正確解析內容網頁的內容。

ASP.NET 在下列情況時可修改 URL:

  • URL 是 ASP.NET 伺服器控制項的屬性。

  • 在控制項內部會將屬性標記為 URL (屬性會以 UrlPropertyAttribute 屬性標示)。實際上,通常用以參考外部資源的 ASP.NET 伺服器控制項屬性會以此方式標記。

其他元素

ASP.NET 無法修改不是伺服器控制項元素上的 URL。例如,若您在主版頁面上使用 IMG 元素,並將其 src 屬性設定為 URL,ASP.NET 就不會修改 URL。在這種情況下,就會在內容網頁的內容中解析 URL,並據以建立 URL。

一般而言,使用主版頁面上的元素時,建議您使用伺服器控制項 (即使是不需要伺服器程式碼的元素)。例如不使用 IMG 元素,而改用 Image 伺服器控制項。ASP.NET 能夠使用這種方式正確解析 URL,並且能夠避免在移動主版或內容網頁時,可能會發生的維護問題。

使用主版頁面的說明

如需主版頁面的詳細資訊,請參閱 MSDN Library 中的下列 ASP.NET 主題:

ASP.NET 主版頁面概觀

ASP.NET 主版頁面和內容網頁中的事件 (英文)

以程式設計方式使用 ASP.NET 主版頁面 (英文)

請參閱

概念

建立主版頁面

利用主版頁面建立網頁

主版頁面工具列

新增內容到內容網頁