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

ASP.NET
asp.net GridView控件中模板列CheckBox全选、反选、取消
asp.net GridView 删除时弹出确认对话框(包括内容提示)
asp.net DropDownList 三级联动下拉菜单实现代码
asp DataTable添加列和行的三种方法
Asp.net 页面调用javascript变量的值
asp.net 长文章通过设定的行数分页
asp.net 定时间点执行任务的简易解决办法
asp.net 页面延时五秒,跳转到另外的页面
asp.net 动态输出透明gif图片
asp.net DataList与Repeater用法区别
asp.net Javascript获取CheckBoxList的value
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net下生成英文字符数字验证码的代码
asp.net 页面版文本框智能提示JSCode (升级版)
ASP.NET URL伪静态重写实现方法
ASP.NET 2.0 中Forms安全认证
asp.net 动态添加多个用户控件
asp.net Repeater显示父子表数据,无闪烁
asp.net 无法获取的内部内容,因为该内容不是文本 的解决方法
asp.net GridView排序简单实现

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


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