PlaceHolder 是一个占位控件,可以在里面添加子控件。
一.ContentPlaceHolder、Content 又是什么呢?
这二者是用于母版技术的。
ContentPlaceHolder 用在母版页中,表示这里面的内容可以被 aspx 页中的 Content 内容替换,当然 aspx 页也可以不理会它。
Content 就是用于 aspx 页的,Content 有个属性是 ContentPlaceHolderID,这指明了:母版中对的 ContentPlaceHolder 那里就放 Content 中的内容。
二.什么是内容占位符控件、内容控件和内容区域?
内容占位符控件代表了母版页上的可替换内容区域。它们在“代码”视图中显示为 <asp:ContentPlaceHolder>,并由contentplaceholderid 属性映射到各自的内容占位符控件。内容占位符定义了内容占位符控件所指定区域的默认内容。内容占位符所指定的默认内容可在母版页中进行修改,以便使这种更改出现在所有附加到该母版页的网页上。
此外,内容控件(在“代码”视图中显示为 <asp:Content>)还可用在单个内容网页上,用于覆盖母版页所提供的内容占位符的默认内容。
内容区域是由单个内容占位符所定义的母版页区域,在“代码”视图中,内容区域的周围是内容占位符控件标记(如果内容由母版页提供)或内容控件标记(如果内容属于单个内容网页中的自定义内容)。
注意 由母版页提供的内容占位符中的内容不会出现在内容网页的该占位符中。
三. PlaceHolder 的用户有哪些?
1. 占位控件 PlaceHolder 用处-批量管理控件
ASP.NET 中,占位控件 PlaceHolder 不向客户端输出任何 HTML 标记。用 PlaceHolder 可以分组控件,便于批量管理。
<asp:PlaceHolder ID="PlaceHolder1" runat="server"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:TextBox ID="TextBox2" runat="server"> </asp:TextBox> </asp:PlaceHolder>
上述两个 TextBox 放在 PlaceHolder 中,用 PlaceHolder1.Visible = false; 可以将两个 TextBox 同时隐藏(不输出到客户端)。而不用一个一个地设置 Visible。
2. 占位控件 PlaceHolder 用处-动态添加控件
ASP.NET 中,占位控件 PlaceHolder 不向客户端输出任何 HTML 标记。用 PlaceHolder 可以“占住位置”,然后在程序中动态处理控件(常用是动态添加)。
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
我们再创建一个控件,添加到 PlaceHolder 中。
System.Web.UI.WebControls.TextBox tb = new TextBox(); tb.ID = "TextBox1";tb.Text = "文本框"; PlaceHolder1.Controls.Add(tb);
总结:使用PlaceHolder控件作为容器来存储动态添加到网页服务器控件. PlaceHolder控件不产生任何可见的输出,只是作为一个容器在Web页面上的其他控件。