首页 > 编程 > .NET > 正文

在ASP.NET 2.0中建立站点导航层次(5)

2024-07-10 13:12:43
字体:
来源:转载
供稿:网友

  url映射

  url映射特性利用web.config中存储的配置信息把收到的请求重映射(remap)到不同的url。重映射发生在对请求的所有其它处理操作之前。下面的例子演示的是重映射一个页面请求,实际上任意文件类型都可以把请求重映射到不同的url。

  定义重映射url

  url映射的配置信息存储在web.config中。元素中嵌套的每个元素为重映射进入站点的(inbound)url定义了一条规则。url属性定义了进入站点的url的exact(原样)属性,url映射特性会试图用它进行匹配操作。如果exact匹配操作发生了,就会给进入站点的url重新写入mappedurl属性值。请注意,这个特性不支持更高级的规则(例如基于通配符和正则表达式的匹配)。

  示例web.config为大量的url定义了映射规则。示例使用的web.sitemap文件定义的大量带有url值的节点都会被重映射。其结果是,url映射和站点导航的组合使用,使得开发者可以用友好的url来定义导航结构,并使用url映射把请求重新写到不同的页面来执行实际的处理过程。

  当你运行示例的时候,请注意menu和treeview控件是如何根据web.sitemap文件中定义的站点结构来显示导航数据的。如果你把鼠标停留在treeview控件或右上角的sitemappath控件的链接上方,状态栏中显示的url是一个友好的url链接。当你点击任何导航链接的时候,实际运行的页面是default.aspx。但是,menu、treeview和sitemappath控件中的导航信息仍然反映为友好的url结构。

  在页面的底部你还可以看到request.path、request.querystring["category"]和request.rawurl返回的值。request.path和request.querystring["category"]返回的值一直反映重映射进入站点的url的结果。但是,request.rawurl的值反映了重映射之前的友好的url。当站点导航特性试图把url信息与sitemap文件包含的数据进行匹配的时候,它会使用request.rawurl。如果匹配的值没有找到,xmlsitemapprovider就把request.path作为替代者。在例子中,所有的友好url在web.sitemap文件中都有条目,因此使用站点导航的控件一直根据友好的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>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表