ASP.NET Web Forms 母版页为网站的其它页面提供模版
母版页
母版页允许我们为 web 应用程序中的所有页面(或页面组)创建一致的外观和行为
母版页为其它页面提供模版,带有共享的布局和功能
母版页为内容定义了可被内容页覆盖的占位符,输出结果是母版页和内容页的组合
内容页可以包含我们想要显示的内容
当用户请求内容页时,ASP.NET 会对页面进行合并以生成结合了母版页布局和内容页内容的输出
母版页范例
<%@ Master %>
<!DOCTYPE html>
<h1>Standard Header From Masterpage</h1>
<asp:ContentPlaceHolder id="CPH1" runat="server"></asp:ContentPlaceHolder>
上面的母版页是一个为其他页面设计的普通 HTML 模版页
@ Master 指令定义它为一个母版页
母版页为单独的内容包含占位标签 <asp:ContentPlaceHolder>
id="CPH1" 属性标识占位符,在相同母版页中允许多个占位符
这个母版页被保存为 "master1.master"
注意 : 母版页也能够包含代码,允许动态的内容
内容页范例
<%@ Page MasterPageFile="master1.master" %>
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
<h2>Individual Content</h2>
<p>Paragraph 1</p><p>Paragraph 2</p>
</asp:Content>
上面的内容页是站点中独立的内容页中的一个
@ Page 指令定义它为一个标准的内容页
内容页包含内容标签 <asp:Content> ,该标签引用了母版页 ( ContentPlaceHolderId="CPH1" )
这个内容页被保存为 "mypage1.aspx"
当用户请求该页面时,ASP.NET 就会将母版页与内容页进行合并
点击这里显示 mypage1.aspx
<!DOCTYPE html>
<meta charset="utf-8" />
<h1>Standard Header From Masterpage</h1>
<h2>Individual Content</h2>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
内容文本必须位于 <asp:Content> 标签内部,标签外的内容文本是不允许的
带控件的内容页
<%@ Page MasterPageFile="master1.master" %>
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
<h2>简单教程</h2>
<form runat="server">
<asp:TextBox id="textbox1" runat="server" />
<asp:Button id="button1" runat="server" text="Button" />
</form>
</asp:Content>
上面的内容页演示了如何把 .NET 控件插入内容页,就像插入一个普通的页面中
点击这里显示 mypage2.aspx
<!DOCTYPE html>
<meta charset="utf-8">
<h1>Standard Header From Masterpage</h1>
<h2>简单教程</h2>
<form method="post" action="mypage2.aspx" id="ctl00">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEyODAxMTI2MDVkZHBmq9YXjwHglc4vWHbIWM2h9OK0mbjbe5gWQeC4+QqY" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKOhanFDwL91+beBALqiYiCBk813hNGiyp4jobDRk7jpN57d0flwxGCwKCtmIbivQne" />
<input name="ctl00$CPH1$textbox1" type="text" id="CPH1_textbox1" />
<input type="submit" name="ctl00$CPH1$button1" value="Button" id="CPH1_button1" />
</form>