文章转自 http://wenku.baidu.com/link?url=7sLN0ihgZQ1XfX47b_y8qbpIVjS5T75Q1xvaoyIQ6OiKIgvzyVyRccnU9e9fqoOm4DBTxNyPPIpgGlq8n5l4cePZngx1J-va9PNFmdRn2se
母版页中ContentPlaceHolder 控件的作用。当母版页被一个页面引用时,
页面内容与母版页上的ContentPlaceHolder控件合并,生成最终输出。
ContentPlaceHolder控件的 ID 属性与映射到引用页面上一个类似的 ID 中。
当母版页上有不止一个 ContentPlaceHolder 控件时,这种映射关系是很有用的。
可以在 ContentPlaceHolder 控件外添加任何 HTML 标记和任何其他控件。
告诉他们母版页上的任何服务器端代码都将在所有引用它的页面上执行。
解释 ContentPlaceHolder 控件的作用。每一个页面自身特定的内容将被放置在 ContentPlaceHolder 控件内。
解释内容页的概念。结合下例解释 @Page 指令及其属性:
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Master1.master" %>
Language 属性定义使用的默认语言,而 MasterPageFile 属性定义使用的母版文件的路径。
解释 Content 控件用于向内容页添加特定于页面的内容。所有特定于页面的内容必须放置在 Content 控件里。
引用页面的 Content 控件与母版页的对应 ContentPlaceHolder 控件之间存在映射关系,这是通过映射它们的 ID 来实现的。
最后,结合以下示例解释母版页的 ContentPlaceHolder 控件与内容页的 Content 控件之间的关系:
// Master File: A.Master
<%@ Master%>
<asp:ContentPlaceHolder ID= "topContent" runat = "server">
//Content File: A.aspx
<%@Page Master = "A.Master"%>
<asp:Content ID = "Content1" ContentPlaceHolderID= "topContent" runat = "server">
--Some markup--
</asp:Content>
在内容文件(A.aspx)的样本代码中,<%@Page%>指令的 master 属性用于引用运行时内容文件将使用的母版文件。
母版文件(A.master)里 ContentPlaceHolder 控件的 ID 属性值与内容文件(A.aspx)里的 ContentPlaceHolderID 属性值是一样的。
运行时,当浏览器请求 A.aspx 时,那么这两个属性将会被映射,从而合并 Content 控件的内容与对应的 ContentPlaceHolder 控件。