MasterPage 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
作為僅由 Content 控制項和其各自子控制項所組成之頁面範本和合併容器。
public ref class MasterPage : System::Web::UI::UserControl
public class MasterPage : System.Web.UI.UserControl
type MasterPage = class
inherit UserControl
Public Class MasterPage
Inherits UserControl
- 繼承
範例
本節包含四個程式代碼範例:
第一個程式代碼範例示範如何以宣告方式建立主版頁面。
第二個程式代碼範例代表與第一個程式代碼範例中建立之主版頁面相關聯的內容頁面。
第三個程式代碼範例示範如何將屬性新增至主版頁面。
第四個程式代碼範例示範如何使用內容頁面來存取主版頁面上的公用屬性。
下列範例示範如何以宣告方式建立主版頁面,以及使用內容頁面將某些內容新增至該主版頁面。 第一個網頁是名為 的 MasterPageSample_1.master
.master 頁面。
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html >
<head runat="server">
<title>MasterPage Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server" />
</div>
</form>
</body>
</html>
<%@ Master Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html >
<head runat="server">
<title>MasterPage Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server" />
</div>
</form>
</body>
</html>
下列範例代表與 MasterPageSample_1.master
相關聯的內容頁面。 它包含 Content 控件,並使用 屬性來識別 ContentPlaceHolder 內容相關聯的 ContentPlaceHolderID 控件。
<%@ Page Language="C#" MasterPageFile="~/MasterPageSample_1cs.master" Title="Content Page"%>
<asp:content
runat="server"
contentplaceholderid="ContentPlaceHolder1" >Hello, Master Pages!</asp:content>
<%@ Page Language="VB" MasterPageFile="~/MasterPageSample_1vb.master" Title="Content Page"%>
<asp:content
runat="server"
contentplaceholderid="ContentPlaceHolder1" >Hello, Master Pages!</asp:content>
下列範例示範如何將屬性新增至主版頁面。 屬性 ClassName
是用來命名主版頁面。
<%@ Master Language="C#" ClassName="MasterExample" %>
<script runat="server">
public string SiteName
{
get { return "My Site Name"; }
}
</script>
<html >
<head runat="server">
<title>MasterPage Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>
<%@ Master Language="VB" ClassName="MasterExample" %>
<script runat="server">
Public ReadOnly Property SiteName() As String
Get
Return "My Site Name"
End Get
End Property
</script>
<html >
<head runat="server">
<title>MasterPage Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>
下列範例示範如何使用內容頁面來存取上述程式代碼範例中主版頁面上的公用屬性 SiteName
。
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" Title="MasterPage Example" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
MasterExample m = (MasterExample)Page.Master;
mylabel.Text = m.SiteName;
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
Hello, Master Pages!
<asp:Label runat="server" Text="Label" ID="mylabel"></asp:Label>
</asp:Content>
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="MasterPage Example" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim m As MasterExample = CType(Page.Master, MasterPage)
mylabel.Text = m.SiteName
End Sub
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
Hello, Master Pages!
<asp:Label runat="server" Text="Label" ID="mylabel"></asp:Label>
</asp:Content>
備註
主版頁面可作為範本容器,並合併 ASP.NET Web 應用程式中內容頁面的頁面。 主版頁面提供一種方便的方式,可在一組內容頁面中共用結構和內容。 您可以使用內容佔位元來定義主版頁面的區段,以取代為內容頁面的內容。
當您使用主版頁面及其相關內容頁面時,您只會將必要的 XHTML 檔卷 (標新增至主版頁面,例如 html
、 head
和 body
) ,不再建立其他.aspx檔案, (ASP.NET 頁面) 為獨立網頁。 內容頁面會定義要插入主版頁面中佔位元的內容。
在運行時間對頁面提出 HTTP 要求時,主版頁面和內容頁面會結合成與內容頁面同名的單一類別。 產生的已編譯合併類別衍生自 Page 類別。
主版頁面可以包含直接標記和伺服器控制項,以及容器控件。 控件外部 ContentPlaceHolder 主版頁面中放置的每個元素都會在合併主版頁面和內容頁面所產生的所有頁面上轉譯。
與主版頁面相關的每個內容頁面都必須參考其 @ Page 指示詞屬性中的MasterPageFile
主版頁面。 內容頁面只能 @ Page
包含指示詞和一或多個 Content 控件。 所有頁面文字、標記和伺服器控件都必須放在控件內 Content 。 您可以藉由設定 ContentPlaceHolderID 控制項的屬性,識別ContentPlaceHolder控制件與關聯之主版頁面Content的Content控制項。
在運行時間,來自所要求頁面之每個 Content 控件的動態內容會與相關 ContentPlaceHolder 控件確切位置的主版頁面合併。 主版頁面中的任何其他標記和控件都不受影響。 事件處理程式可以在主類別和內容頁面上定義。 如需詳細資訊,請參閱 ASP.NET 主版和內容頁面中的事件。
類別 MasterPage 與擴展名為 .master 的檔案相關聯。 這些檔案會在運行時間編譯為 MasterPage 物件,並在伺服器記憶體中快取。
主版頁面是透過 Master 基 Page 類的 屬性提供給內容頁面。 屬性 Master 會傳回主版頁面的實例;不過,它會輸入為基 MasterPage 類。 若要存取主版頁面的控件、屬性和函式, Master 屬性可以轉換成 MasterPage 物件。 主版頁面的類別名稱是使用 ClassName
@ Master 指示詞的 屬性來定義。
注意
具有 .master 擴展名的檔案不會提供給瀏覽器。
在主版頁面上有效的指示詞,與 物件上 UserControl 可用的指示詞相同。 它們可以包含下列屬性:
AutoEventWireup
ClassName
CodeFile
CompilerMode
CompilerOptions
Debug
Description
EnableTheming
EnableViewState
Explicit
Inherits
Language
LinePragmas
MasterPageFile
Src
Strict
WarningLevel
主版頁面指示詞不會覆寫個別內容頁面上的 指示詞。
主版頁面最常以宣告方式建立。 如果您想要以程序設計方式建立主版頁面,請直接從 MasterPage 類別衍生。 除了擴充 MasterPage 類別之外,您還必須建立 .master 檔案,以可視化方式顯示使用者介面 (UI) 與您在來源檔案中叫用的類別相關聯。
注意
當您先建立自己的類別來建立主版頁面時,您必須包含頁面所使用的類別所需的所有命名空間。
如需主版頁面的詳細資訊,請參閱 ASP.NET 主版頁面。
建構函式
MasterPage() |
建立 MasterPage 類別的新執行個體。 |
屬性
Adapter |
針對控制項取得瀏覽器的特定配置器。 (繼承來源 Control) |
Application |
取得目前 Web 要求的 Application 物件。 (繼承來源 UserControl) |
AppRelativeTemplateSourceDirectory |
取得或設定包含了此控制項之 Page 或 UserControl 物件的相對應用程式虛擬目錄。 (繼承來源 Control) |
AppRelativeVirtualPath |
取得或設定要在其中剖析和編譯控制項之檔案的應用程式相對虛擬目錄路徑。 (繼承來源 TemplateControl) |
Attributes |
取得 .aspx 檔案內的使用者控制項標記中所宣告的所有屬性 (Attribute) 名稱和值配對的集合。 (繼承來源 UserControl) |
AutoHandlers |
已淘汰.
AutoHandlers 屬性在 ASP.NET 2.0 中已被取代。 此屬性由產生的類別使用,並不適用於您的程式碼中。 (繼承來源 TemplateControl) |
BindingContainer |
取得包含了此控制項之資料繫結的控制項。 (繼承來源 Control) |
Cache |
取得 Cache 物件,這個物件與包含使用者控制項的應用程式關聯。 (繼承來源 UserControl) |
CachePolicy |
取得這個使用者控制項之快取參數集合的參考。 (繼承來源 UserControl) |
ChildControlsCreated |
取得值,指出是否已經建立伺服器控制項的子控制項。 (繼承來源 Control) |
ClientID |
取得 ASP.NET 所產生之 HTML 標記的控制項識別碼。 (繼承來源 Control) |
ClientIDMode |
取得或設定用來產生 ClientID 屬性值的演算法。 (繼承來源 Control) |
ClientIDSeparator |
取得字元值,表示在 ClientID 屬性中所使用的分隔字元。 (繼承來源 Control) |
ContentPlaceHolders |
取得主版頁面用來定義不同內容區的 ContentPlaceHolder 控制項清單。 |
ContentTemplates |
取得與主版頁面關聯的內容控制項清單。 |
Context |
取得與目前 Web 要求的伺服器控制項關聯的 HttpContext 物件。 (繼承來源 Control) |
Controls |
取得 ControlCollection 物件,表示 UI 階層架構中指定之伺服器控制項的子控制項。 (繼承來源 Control) |
DataItemContainer |
如果命名容器實作 IDataItemContainer,則取得命名容器的參考。 (繼承來源 Control) |
DataKeysContainer |
如果命名容器實作 IDataKeysControl,則取得命名容器的參考。 (繼承來源 Control) |
DesignMode |
取得值,指出控制項是否正用於設計介面上。 (繼承來源 Control) |
EnableTheming |
取得或設定布林值,指出主題是否套用至衍生自 TemplateControl 類別的控制項。 (繼承來源 TemplateControl) |
EnableViewState |
取得或設定值,該值表示伺服器控制項是否對要求的用戶端而言保持其檢視狀態,以及它包含的任何子控制項狀態。 (繼承來源 Control) |
Events |
取得控制項事件處理常式委派 (Delegate) 的清單。 這個屬性是唯讀的。 (繼承來源 Control) |
HasChildViewState |
取得值,指出目前伺服器控制項的子控制項是否有任何已儲存的檢視狀態設定。 (繼承來源 Control) |
ID |
取得或設定指派給伺服器控制項的程式設計識別項。 (繼承來源 Control) |
IdSeparator |
取得用來分隔控制項識別項的字元。 (繼承來源 Control) |
IsChildControlStateCleared |
取得值,指出這個控制項中所包含的控制項是否有控制項狀態。 (繼承來源 Control) |
IsPostBack |
取得值,指出使用者控制項是否為回應用戶端回傳而被載入,或者是否為第一次被載入與存取。 (繼承來源 UserControl) |
IsTrackingViewState |
取得值,指出伺服器控制項是否正在儲存檢視狀態的變更。 (繼承來源 Control) |
IsViewStateEnabled |
取得值,指出這個控制項是否已啟用檢視狀態。 (繼承來源 Control) |
LoadViewStateByID |
取得值,指出控制項是否依 ID (而不是索引) 參與載入其檢視狀態。 (繼承來源 Control) |
Master |
在巢狀主版頁面案例中,取得目前主版頁面的父主版頁面。 |
MasterPageFile |
取得或設定包含了目前內容之主版頁面的名稱。 |
NamingContainer |
取得伺服器控制項命名容器的參考,其建立唯一命名空間,在具有相同 ID 屬性值的伺服器控制項之間作區別。 (繼承來源 Control) |
Page |
取得含有伺服器控制項的 Page 執行個體的參考。 (繼承來源 Control) |
Parent |
在網頁控制階層架構中取得伺服器控制項之父控制項的參考。 (繼承來源 Control) |
RenderingCompatibility |
取得值,這個值會指定將與呈現 HTML 相容的 ASP.NET 版本。 (繼承來源 Control) |
Request |
取得目前 Web 要求的 HttpRequest 物件。 (繼承來源 UserControl) |
Response |
取得目前 Web 要求的 HttpResponse 物件。 (繼承來源 UserControl) |
Server |
取得目前 Web 要求的 HttpServerUtility 物件。 (繼承來源 UserControl) |
Session |
取得目前 Web 要求的 HttpSessionState 物件。 (繼承來源 UserControl) |
Site |
當呈現在設計介面上時,取得裝載目前控制項之容器的資訊。 (繼承來源 Control) |
SkinID |
取得或設定要套用至控制項的面板。 (繼承來源 Control) |
SupportAutoEvents |
取得值,指出 TemplateControl 控制項是否支援自動事件。 (繼承來源 TemplateControl) |
TemplateControl |
取得或設定包含了此控制項之樣板的參考。 (繼承來源 Control) |
TemplateSourceDirectory |
取得包含目前伺服器控制項的 Page 或 UserControl 的虛擬目錄。 (繼承來源 Control) |
Trace |
取得目前 Web 要求的 TraceContext 物件。 (繼承來源 UserControl) |
UniqueID |
取得伺服器控制項唯一的、符合階層架構的識別項。 (繼承來源 Control) |
ValidateRequestMode |
取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。 (繼承來源 Control) |
ViewState |
取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。 (繼承來源 Control) |
ViewStateIgnoresCase |
取得值,指出 StateBag 物件是否不區分大小寫。 (繼承來源 Control) |
ViewStateMode |
取得或設定這個控制項的檢視狀態模式。 (繼承來源 Control) |
Visible |
取得或設定值,指出伺服器控制項是否會轉譯為頁面上的 UI。 (繼承來源 Control) |
方法
事件
AbortTransaction |
在使用者結束交易時發生。 (繼承來源 TemplateControl) |
CommitTransaction |
當交易完成時發生。 (繼承來源 TemplateControl) |
DataBinding |
發生於伺服器控制項繫結至資料來源時。 (繼承來源 Control) |
Disposed |
發生於伺服器控制項從記憶體釋放時,這是在要求 ASP.NET 網頁時,伺服器控制項生命週期的最後階段。 (繼承來源 Control) |
Error |
當擲回未處理的例外狀況時發生。 (繼承來源 TemplateControl) |
Init |
發生於初始化伺服器控制項時,是其生命週期中的第一個步驟。 (繼承來源 Control) |
Load |
發生於載入伺服器控制項至 Page 物件時。 (繼承來源 Control) |
PreRender |
在 Control 物件載入之後但在呈現之前發生。 (繼承來源 Control) |
Unload |
發生於伺服器控制項從記憶體卸載時。 (繼承來源 Control) |
明確介面實作
擴充方法
FindDataSourceControl(Control) |
傳回與指定之控制項的資料控制項相關聯的資料來源。 |
FindFieldTemplate(Control, String) |
傳回在指定之控制項的命名容器中所指定資料行的欄位樣板。 |
FindMetaTable(Control) |
傳回包含資料控制項的中繼資料表物件。 |
GetDefaultValues(INamingContainer) |
取得所指定資料控制項的預設值集合。 |
GetMetaTable(INamingContainer) |
取得所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable) |
設定所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
SetMetaTable(INamingContainer, MetaTable, Object) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
TryGetMetaTable(INamingContainer, MetaTable) |
判斷資料表中繼資料是否可供使用。 |
EnableDynamicData(INamingContainer, Type) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, Object) |
針對指定的資料控制項啟用動態資料行為。 |