ASP.NET 2.0 - 母版页(Master Pages)
母版页(Master Pages)
Master Page 使您有能力为 web 应用程序中的所有页面(或页面组)创建一致的外观和行为。
Master Page 为其他页面提供了模版,带有共享的布局和功能。Master Page 为内容定义了可被内容页面覆盖的占位符。而输出结果就是 Master Page 和内容页面的组合。
内容页包含您希望显示的内容。
当用户请求内容页时,ASP.NET 会对页面进行合并以生成输出,输出结果对 Master Page 的布局和内容页面的内容进行了合并。
<%@ Master %>
<asp:ContentPlaceHolder id="CPH1" runat="server">
</asp:ContentPlaceHolder>
Master Page 是一张为其他页面设计的普通 HTML 模版页。
@ Master 指令把它定义为一张 master page。
这个 master page 为单独的内容包含了一个占位符标签 <asp:ContentPlaceHolder>。
id="CPH1"
该 master page 被保存为 "master1.master"。
注释:该 master page 也能够包含代码,允许动态的内容。
内容页实例:
<%@ Page MasterPageFile="master1.master" %>
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
</asp:Content>
上面的内容页是独立的内容页面之一。
@ Page 指令把它定义为一张标准的内容页面。
该内容页面包含了一个内容标签<asp:Content>,该标签引用了母版页(ContentPlaceHolderId="CPH1")。
该内容页被保存为 "mypage1.aspx"。
当用户请求该页面时,ASP.NET 就会将母版页与内容页进行合并。
注释:内容文本必须位于 <asp:Content> 标签内。该标签外的文本是不被允许的。
带有控件的内容页
<form runat="server">
<asp:TextBox id="textbox1" runat="server" />
<asp:Button id="button1" runat="server" text="Button" />
</form>
上面的内容页演示了如何把 .NET 控件插入内容页,就像插入一个普通的页面中。
ASP.NET 2.0 - 导航(Navigation)
网站导航
维护大型站点的导航菜单是很困难,也很费时的。在 ASP.NET 2.0 中,菜单可存储在文件中,这样维护起来更加方便。这个文件通常名为 web.sitemap,被存放在网站的根目录中。此外,ASP.NET 2.0 拥有三种新的导航控件:
- Dynamic menus
- TreeViews
- Site Map Pat
Sitemap 文件
- 本教程使用下面的 sitemap 文件(站点地图):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<siteMap>
<siteMapNode title="Home" url="/aspnet/w3home.aspx">
<siteMapNode title="Services" url="/aspnet/w3services.aspx">
<siteMapNode title="Training" url="/aspnet/w3training.aspx"/>
<siteMapNode title="Support" url="/aspnet/w3support.aspx"/>
</siteMapNode>
</siteMapNode>
</siteMap>
创建 sitemap 文件的规则:
- XML 文件必须包含围绕内容的 <siteMap> 标签
- <siteMap> 标签只能有一个 <siteMapNode> 子节点 ("home" page)
- 每个 <siteMapNode> 可以有多个子节点 (web pages)
- 每个 <siteMapNode> 拥有定义页面标题和 URL 的属性
注释:sitemap 文件必须存放在站点的根目录中,URL 属性必须相对于该根目录。
Dynamic Menu
<asp:Menu> 控件可显示标准的站点导航菜单。
代码实例:
<asp:SiteMapDataSource id="nav1" runat="server" />
<form runat="server">
<asp:Menu runat="server" DataSourceId="nav1" />
</form>
在上面的例子中的 <asp:Menu> 控件是一个供服务器创建导航菜单的占位符。
控件的数据源由 DataSourceId 属性进行定义。id="nav1" 把它连接到 <asp:SiteMapDataSource> 控件。
<asp:SiteMapDataSource> 控件会自动连接默认的 sitemap 文件(web.sitemap)。
TreeView
<asp:TreeView> 控件可显示多级导航菜单。
这种菜单看上去像一棵带有枝叶的树,可通过 + 或 - 符号来打开或关闭。
代码实例:
<asp:SiteMapDataSource id="nav1" runat="server" />
<form runat="server">
<asp:TreeView runat="server" DataSourceId="nav1" />
</form>
上面例子中的 <asp:TreeView> 控件是一个供服务器创建导航菜单的占位符。
控件的数据源由 DataSourceId 属性进行定义。id="nav1" 把它连接到 <asp:SiteMapDataSource> 控件。
<asp:SiteMapDataSource> 控件会自动连接默认的 sitemap 文件(web.sitemap)。
SiteMapPath
SiteMapPath 控件可显示指向当前页面的指针(导航路径)。该路径显示为指向上级页面的可点击链接。
与 TreeView 和 Menu 控件不同,SiteMapPath 控件不使用
提示:如果 SiteMapPath 没有正确显示,很可能是由于 web.sitemap 文件中存在 URL 错误。
代码实例:
<form runat="server">
<asp:SiteMapPath runat="server" />
</form>
上面例子中的 <asp:SiteMapPath> 控件是一个供服务器创建导航菜单的占位符。