多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# ASP.NET Web Forms - 导航 ASP.NET 带有内建的导航控件。 ## 网站导航 维护大型网站的菜单是困难而且费时的。 在 ASP.NET 中,菜单可存储在文件中,这样易于维护。文件通常名为 **web.sitemap**,并且被存放在网站的根目录下。 此外,ASP.NET 有三个心的导航控件: * Dynamic menus * TreeViews * Site Map Path ## 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 文件必须包含 围绕内容的 &lt;siteMap&gt; 标签 * &lt;siteMap&gt; 标签只能有一个 &lt;siteMapNode&gt; 子节点( "home" 页面) * 每个 &lt;siteMapNode&gt; 可以有多个子节点(网页) * 每个 &lt;siteMapNode&gt; 带有定义页面标题和 URL 的属性 > ![lamp](https://box.kancloud.cn/2015-12-12_566b901025f8f.jpg) > **注释:**sitemap 文件必须位于站点根目录下,URL 属性必须相对于该根目录。 ## 动态菜单 &lt;asp:Menu&gt; 控件可显示标准的站点导航菜单。 **代码实例:** ``` <asp:SiteMapDataSource id="nav1" runat="server" /> <form runat="server"> <asp:Menu runat="server" DataSourceId="nav1" /> </form> ``` 上面实例中的 **&lt;asp:Menu&gt;** 控件是一个供服务器创建导航菜单的占位符。 控件的数据源由 **DataSourceId** 属性定义。 **id="nav1"** 把数据源连接到 **&lt;asp:SiteMapDataSource&gt;** 控件。 **&lt;asp:SiteMapDataSource&gt;** 控件自动连接默认的 sitemap 文件(**web.sitemap**)。 ## TreeView &lt;asp:TreeView&gt; 控件可显示多级导航菜单。 这种菜单看上去像一棵带有枝叶的树,可通过 + 或 - 符号来打开或关闭。 **代码实例:** ``` <asp:SiteMapDataSource id="nav1" runat="server" /> <form runat="server"> <asp:TreeView runat="server" DataSourceId="nav1" /> </form> ``` 上面实例中的 **&lt;asp:TreeView&gt;** 控件是一个供服务器创建导航菜单的占位符。 控件的数据源由 **DataSourceId** 属性定义。 **id="nav1"** 把数据源连接到 **&lt;asp:SiteMapDataSource&gt;** 控件。 **&lt;asp:SiteMapDataSource&gt;** 控件自动连接默认的 sitemap 文件(**web.sitemap**)。 ## SiteMapPath SiteMapPath 控件可显示指向当前页面的指针(导航路径)。该路径显示为指向上级页面的可点击链接。 与 TreeView 和 Menu 控件不同,SiteMapPath 控件**不使用** SiteMapDataSource。SiteMapPath 控件默认使用 web.sitemap 文件。 > ![lamp](https://box.kancloud.cn/2015-12-12_566b901025f8f.jpg) > 提示:如果 SiteMapPath 没有正确显示,很可能是由于 web.sitemap 文件中存在 URL 错误(打印错误)。 **代码实例:** ``` <form runat="server"> <asp:SiteMapPath runat="server" /> </form> ``` 上面实例中的 **&lt;asp:SiteMapPath&gt;** 控件是一个供服务器创建导航菜单的占位符。