当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 在ASP.NET 2.0中建立站点导航层次(5)

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 132 ::
收藏到网摘: n/a

  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>