|
在Web页面上提供站点导航的最简单办法就是使用图形化的站点导航控件(SiteMapPath、TreeView和 Menu)。
· SiteMapPath--一个breadcrumb控件,它检索用户的当前页面并显示页面的层次结构。这让用户可以导航回层次中其它的页面。SiteMapPath只能与SiteMapProvider一起使用,需要设置控件的SiteMapProvider属性。
· TreeView--在Web页面上提供垂直的用户界面,它可以展开和收缩选中的节点,也可以提供检查框功能以供用户选择数据项。TreeView控件支持宣告式的或编程设置数据元素和数据源控件。如果你使用SiteMapDataSource控件,那么数据绑定就是自动进行的。
· Menu--提供水平的或垂直的用户界面,当用户把鼠标放在一项上的时候会弹出子菜单。Menu控件支持宣告式的或编程设置数据元素或数据源控件。如果你使用SiteMapDataSource控件,数据绑定就是自动进行的。
请注意,TreeView和Menu控件都可以用于非导航的情形。
在下面的例子中,你看到的TreeView和Menu控件为不同的区域和操作(例如NodeStyle和HoverNodeStyle)配置了一些样式属性。例子中的TreeView和Menu控件都连接到页面上的同一个SiteMapDataSource控件。SiteMapPath控件通过Web.config文件中设置的默认的SiteMapProvider来访问相同的数据。
以下是引用片段: <asp:treeview ID="TreeView1" ForeColor="White" DataSourceId="SiteMapDataSource1" NodeIndent="0" NodeStyle-ChildNodesPadding="10" runat="server"> <LevelStyles> <asp:TreeNodeStyle Font-Bold="true"/> <asp:TreeNodeStyle /> <asp:TreeNodeStyle Font-Size="x-small"/> </LevelStyles> <nodestyle forecolor="White" HorizontalPadding="5"/> <SelectedNodeStyle backcolor="lightblue" forecolor="blue" /> <HoverNodeStyle Font-UnderLine="true" /> </asp:treeview> <asp:sitemappath id="SiteMapPath1" runat="server" /> <asp:Menu ID="Menu1" DataSourceId="SiteMapDataSource1" runat="server"> <DynamicSelectedStyle BackColor="lightblue" ForeColor="Blue" /> <DynamicHoverStyle Font-Underline="true" /> <StaticHoverStyle Font-Underline="true" /> </asp:Menu> <asp:sitemapdatasource id="SiteMapDataSource1" runat="server" /> |
使用站点导航API
站点导航API是使用可配置的提供程序访问导航数据的编程抽象内容。站点导航提供程序把导航数据的存储细节信息与API的其它部分隔离开来。站点导航API通过SiteMap和SiteMapNode类来暴露导航数据。SiteMap类返回与当前页面对应的SiteMapNode实例。它还可以访问那些为站点导航特性配置的提供程序。SiteMapProvider为执行下面一些事务提供了丰富的API:
· 依据当前的HttpContext或任意URL检索SiteMapNode实例。
· 检索SiteMapNode的父或子节点。
· 访问当前页面的SiteMapNode,以及整个导航层次中的根SiteMapNode。
· 执行授权规则,这样就保证了提供程序只返回用户可以看见的节点。
SiteMapNode实例暴露的基本导航信息和功能包括:
· URL、Title和description属性,以及开发者给SiteMapNode添加的自定义属性。
· 获取某个节点的父和子节点。
· 在某个节点的前后节点之间进行导航。
· 获取SiteMapProvider实例的指针,它返回一个节点。
ASP.NET发布的时候带有XmlSiteMapProvider提供程序。该提供程序使用XML文件(web.sitemap)中的数据,并根据数据返回SiteMapNode实例。XmlSiteMapProvider有下面一些功能:
|