我們在asp.net中建立一個完整的主版頁面之後,接下來必然要建立內容頁。從使用者訪問的角度來講,內容頁與最終結果頁的訪問路徑相同,這好像表明二者是同一檔案,實際不然。結果頁是一個虛擬頁面,沒有實際代碼,其代碼內容是在運行時狀態下主版頁面和內容頁合并的結果。
在開始介紹內容頁之前,還有兩個概念需要強調:一是內容頁中所有內容必須包含在Content控制項中;二是內容頁必須綁定主版頁面。雖然內容頁的副檔名與普通ASP.NET頁面相同,但是,其代碼結構有著很大差別。在建立內容頁的過程中,必須時刻牢記以上兩個重要概念。
內容頁Index.aspx檔案原始碼
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Index.aspx.cs" Inherits="Index" Title="樣本5-1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<img src="images/pagepic.gif" width="244" height="223" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server">
<p> </p><p> </p>
<h1>網站介紹_IT知道網()</h1>
<p>本頁面採用來自ASP.NET 2.0技 術的主版頁面新特性進行開發。 主要包括兩個頁面:主版頁面和內容頁。 主版頁面尾碼名是.master,其封裝網站中的共用元素。 內容頁實際是普通的.aspx檔案,它包含除主版頁面的其他內容。在運行時,ASP.NET引擎將兩種頁面內容合并執行,最後將結果發給用戶端瀏覽 器。</p>
</asp:Content>
以上粗 體代碼是內容頁的代碼結構。從中可以看出,內容頁與普通.aspx檔案在代碼上的不同。內容頁沒 有<html>、<body>、<form>等關鍵Web元素,這些元素都被放置在主版頁面中。內容頁中除了代碼頭聲 明,僅包含Content控制項。內容頁的代碼頭聲明與普通.aspx檔案相似。但是,新增加了兩個屬性MasterPageFile和Title。屬性 MasterPageFile用於設定該內容頁所綁定的主版頁面的路徑,屬性Title用於設定頁面title值。在建立內容頁過程中,由於已經指定了所綁 定主版頁面,因此,Visual Studio 2005將自動化佈建MasterPageFile屬性值。另外,在原始碼中,還設定了兩個Content控制項Content1和Content2。
兩 個控制項內部包含的內容是頁面的非公用部分。通過設定屬性ContentPlaceHolderID,將Content1與主版頁面的 ContentPlaceHolder1對應,將Content2與主版頁面的ContentPlaceHolder2對應。在頁面運行時,Content 控制項中包含的內容將顯示在主版頁面中的對應位置。
ASP.NET之主版頁面和內容頁之間的傳值
擷取主版頁面上文字框的值賦給內容頁的文字框
this.TextBox1.Text = (Master.FindControl("textBox1") as TextBox).Text;
擷取內容頁上文字框的值賦給主版頁面的文字框
TextBox1.Text = (this.ContentPlaceHolder1.FindControl("textBox1") as TextBox).Text;