9.1 站点地图
默认情况下,站点导航系统使用一个包含站点层次结构的XML文件,创建站点地图的方法是创建一个Web.sitemap的XML文件,该文件按站点的分层形式组织页面。ASP.NET的默认站点地图提供程序自动选取此站点地图。
9.1.1 定义站点地图文件
通常情况下,定义站点地图文件也就是为网站添加Web.sitemap文件。添加Web.sitemap的步骤如下。
(1)在网站的解决方案资源管理器视图中,右击“网站项目名称”,在弹出的菜单中选择“添加新项”命令,如图9-1所示。
图9-1 添加新项
(2)在弹出的“添加新项”对话框中,选择“站点文件”选项,单击“确定”按钮即可完成添加,如图9-2所示。
图9-2 添加站点地图文件
下面是Web.sitemap文件示例。
在Web.sitemap文件中,为网站中的每一页添加一个siteMapNode元素,然后通过嵌入siteMapNode元素创建层次结构。
9.1.2 使用SiteMapPath控件
SiteMapPath控件反映SiteMap对象提供的数据。它提供了一种用于轻松定位站点的节省空间方式,用作当前显示页在站点中位置的引用点。SiteMapPath控件直接使用网站的站点地图数据,比如,当浏览“预约教员”网页时,则SiteMapPath控件会显示与下面类似的内容。
主页>学员>预约教员
SiteMapPath由节点组成。路径中的每个元素均称为节点,用SiteMapNodeItem对象表示。锚定路径并表示分层树根的节点称为根节点,表示当前显示页的节点称为当前节点,当前节点与根节点之间的任何其他节点都为父节点。
SiteMapPath显示的每个节点都是HyperLink或Literal控件,可以将模板或样式应用到这两种控件中。
使用SiteMapPath控件无需代码和绑定数据就能创建站点导航,此控件可自动读取和呈现站点地图信息,也可以使用SiteMapPath控件更改站点地图数据。
下面演示SiteMapPath控件的使用。
示例1:使用SiteMapPath控件
(1)新建一个空网站。
(2)在网站的根目录中添加Web.sitemap,打开此Web.sitemap文件,输入以下代码。
(3)保存该文件,将其关闭。
(4)在网站的根目录中添加一个窗体:BookTeacher.aspx,打开BookTeacher.aspx文件,切换到“设计”视图,从工具箱中双击“SiteMapPath”控件,将其添加到页面中,并添加下面的代码。
(5)看到SiteMapPath控件立即显示Web.sitemap站点地图文件的内容,如图9-3所示。
图9-3 显示导航数据
同样,用户添加另一个窗体:Index.aspx,并在页面上添加SiteMapPath控件,Index.aspx窗体立即显示当前页面的导航:首页>学员。
注意
只有在站点地图中列出的网页才能在SiteMapPath控件中显示导航数据。如果将SiteMapPath控件放置在站点地图中未列出的页上,该控件将不会向客户端显示任何信息。
9.1.3 SiteMap类
SiteMap类是站点的导航结构在内存中的表示形式,导航结构由一个或多个站点地图提供程序提供。SiteMap类默认的提供程序是XmlSiteMapProvider类,它使用XML配置文件Web.sitemap,具有以下3个功能。
(1)提供站点导航层次结构的根节点。
(2)标识哪个站点地图提供程序是主要的或默认的提供程序。
(3)跟踪用于创建SiteMap的所有提供程序对象。
SiteMap是SiteMapNode对象分层集合的容器,但是SiteMap不维护节点之间的关系,通常,它将此任务委托给站点地图提供程序。SiteMap充当到站点导航信息的一个接口,站点地图提供程序以SiteMapNode对象的形式包含这些信息,该类跟踪可从中访问站点导航数据的提供程序,并公开Providers集合。
SiteMap类的主要属性如表9-1所示。
表9-1 SiteMap类的主要属性
它的主要事件是SiteMapResolve,当访问CurrentNode属性时发生。
9.1.4 URL地址映射
URL地址映射就是把一个URL地址映射为另外一个URL地址,当用户访问URL地址时,自动转到映射的URL地址。通常情况下,为保护真实的URL地址,可以使用URL地址映射来实现。使用URL地址映射,可在Web.config文件中使用<urlMappings>标记来设置URL映射。
< urlMappings >的语法如下。
在上述语法中中,enabled为可选的Boolean特性,确定是否启用站点导航功能,默认值为true。
add为可选元素,将指定的UrlMapping对象添加到集合。clear可选元素,从集合中移除所有UrlMapping对象。remove可选元素,从集合中移除UrlMapping对象。
当然,在定义URL映射时还需要提供请求URL(url特性)和目标URL(mappedUrl特性)。
示例如下。
上面的示例中,就分别对adminLogin.aspx、StudentLogin.aspx、TeacherLogin.aspx等进行了映射,当用户使用adminLogin.aspx访问时,系统会自动将地址映射到Default.aspx?UserType=admin,但浏览器的URL仍显示原请求的URL:adminLogin.aspx。