在ASP.NET 2.0中建立站点导航层次(5)
核心提示:站点导航API--站点导航API用于在利用程序的代码中访问站点导航信息,它摘录了导航信息存储的细节。你可使用API来编程访问利用程序的导航节点。
URL映照
URL映照特性利用web.config中存储的配置信息把收到的要求重映照(remap)到不同的URL。重映照产生在对要求的所有其它处理操纵之前。下面的例子演示的是重映照1个页面要求,实际上任意文件类型都可以把要求重映照到不同的URL。
定义重映照URL
URL映照的配置信息存储在web.config中。元素中嵌套的每个元素为重映照进进站点的(inbound)url定义了1条规则。url属性定义了进进站点的url的exact(原样)属性,URL映照特性会试图用它进行匹配操纵。假设exact匹配操纵产生了,就会给进进站点的URL重新写进mappedUrl属性值。请留意,这个特性不支持更高级的规则(例如基于通配符和正则表达式的匹配)。
示例web.config为大量的url定义了映照规则。示例使用的web.sitemap文件定义的大量带有URL值的节点都会被重映照。其结果是,URL映照和站点导航的组合使用,使得开发者可以用友好的url来定义导航结构,并使用URL映照把要求重新写到不同的页面来履行实际的处理进程。
当你运行示例的时候,请留意Menu和Treeview控件是如何根据web.sitemap文件中定义的站点结构来显示导航数据的。假设你把鼠标停留在Treeview控件或右上角的SiteMapPath控件的链接上方,状态栏中显示的url是1个友好的url链接。当你点击任何导航链接的时候,实际运行的页面是Default.aspx。但是,Menu、Treeview和SiteMapPath控件中的导航信息依然反应为友好的URL结构。
在页面的底部你还可以看到Request.Path、Request.QueryString["category"]和Request.RawUrl返回的值。Request.Path和Request.QueryString["category"]返回的值1直反应重映照进进站点的url的结果。但是,Request.RawUrl的值反应了重映照之前的友好的url。当站点导航特性试图把url信息与sitemap文件包括的数据进行匹配的时候,它会使用Request.RawUrl。假设匹配的值没有找到,XmlSiteMapProvider就把Request.Path作为替换者。在例子中,所有的友好url在web.sitemap文件中都有条目,因此使用站点导航的控件1直根据友好的url来显示和援用节点。
以下是援用片断:
<?xml version="1.0" ?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<urlMappings enabled="true">
<add url="~/Category.aspx" mappedUrl="~/Default.aspx?category=default" />
<add url="~/Autos.aspx" mappedUrl="~/Default.aspx?category=autos" />
<add url="~/Games.aspx" mappedUrl="~/Default.aspx?category=games" />
<add url="~/Health.aspx" mappedUrl="~/Default.aspx?category=health" />
<add url="~/News.aspx" mappedUrl="~/Default.aspx?category=news" />
</urlMappings>
</system.web>
</configuration>
TAG:信息,站点,控件,定义,友好
评论加载中...
|