ASP.NET Web Forms 带有内建的导航控件
网站导航
ASP.NET 中,菜单可存储在文件 web.sitemap 中,这个文件存放在网站的根目录下
ASP.NET 有三个导航控件
- Dynamic menus
- TreeViews
- Site Map Path
Sitemap 文件
本章,我们使用的 sitemap 文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<siteMap>
<siteMapNode title="Home" url="/yufei/aspnet">
<siteMapNode title="Services" url="/aspnet/services">
<siteMapNode title="Training" url="/aspnet/training"/>
<siteMapNode title="Support" url="/aspnet/support"/>
</siteMapNode>
</siteMapNode>
</siteMap>
创建 sitemap 文件的规则
- XML 文件必须包含 围绕内容的 <siteMap> 标签
- <siteMap> 标签只能有一个 <siteMapNode> 子节点( "home" 页面)
- 每个 <siteMapNode> 可以有多个子节点(网页)
- 每个 <siteMapNode> 带有定义页面标题和 URL 的属性
注意: sitemap 文件必须位于站点根目录下,URL 属性必须相对于该根目录
动态菜单
<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 控件 不使用 SiteMapDataSource
SiteMapPath 控件默认使用 web.sitemap 文件
<form runat="server">
<asp:SiteMapPath runat="server" />
</form>
代码中的 <asp:SiteMapPath> 控件是一个供服务器创建导航菜单的占位符
如果 SiteMapPath 没有正确显示,很可能是由于 web.sitemap 文件中存在 URL 错误