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

ASP.NET
.Net中使用com组件后发生System.ArithmeticException异常的解决办法
SQL Server.net 和 OLE DB.net连接数据库的比较
后台更新DataTable行内容的方法
敏捷软件开发(原则,模式与实践)笔记1
确保文本框输入值为数值的代码
XML和数据库之间相互的映射
让你的.NET程序兼容不同版本的Dll文件。
.NET 的数据访问应用程序块(Data Access Application Block)
用控件仅一条指令实现界面换肤和多语言版本(YFSkins)
Microsoft User Interface Process Application Block 研究(3)
分享:处理Excel方法小结
基于ASP.NET实现全球化
.net 里面 protected private 的变量也可以访问(新发现)。
关于C#中{0}和{1}的问题初次在此发贴,问题对你易对我难,求救了
使用C#代码实现增加用户帐号
全世界都在关注-微软重大产品发布
教你做Rational Rose(UML Design)
OLE DB取得数据库的架构信息
VB 从零开始编外挂(三)
XPath序列之四

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 157 ::
收藏到网摘: 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>