日期:2011-09-29  浏览次数:20315 次

介绍
url映射是asp.net 2.0的一个新的特性,它可以让开发人员把一个页映射到另一个url上。如果一个url请求过来,程序会自动把它重新映射到服务端。例如,如果你在程序中配置了把~/Beverages.aspx映射到了~/ProductsByCategory.aspx?CategoryID=1&CategoryName=Beverages,那么当用户在浏览器中输入了http://YourSite.com/Beverages.aspx,服务器会接收后会自动的转到http://YourSite.com/ProductsByCategory.aspx?CategoryID=1&CategoryName=Beverages去处理。而这个用户在浏览器的地址栏中看到的仍然是http://YourSite.com/Beverages.aspx。他们不会知道这个请求被重新映射了。

url映射经常是为了提供友好的url而被使用,这种友好的url更易读,更容易理解。例如Beverages.aspx要比ProductsByCategory.aspx?CategoryID=1&CategoryName=Beverages更容易懂。当你修改站点结构的时候,url映射也是非常有用的。想象一下,所有的产品信息都需要用http://YourSite.com/Products/...来访问,如果你想修改这个结构,通过http://YourSite.com/Catalog/...来代替它的话,如果一位你的老用户通过收藏夹来访问的话,就会得到一个404的错误,而如果使用url映射,则两个url写法都能够访问到产品信息。

本文我们将研究如何设置asp.net 2.0 web应用程序提供的url映射功能,也来看一看url映射是如何工作的。我们也将论述一下asp.net 1.x中的url映射实现的技术,以及扩展asp.net 2.0中的url映射。接下来你将看到更多。


定义url映射
在asp.net 2.0中使用url映射是非常简单的,我们可以直接在web.config中设置。通过一些简单的配置,我们就可以在一些场景中建立url映射的功能,但是它不适用一些复杂的场景,如需要动态定义映射或者需要更强适应性的时候。本文稍后会提供一个简单的例子。

为了指定一个映射,我们可以在web.config里增加一个<urlMappings>元素,并设置它的enabled属性为true,然后再每一个<add>元素中做映射。在<add>元素中,分别指明url(引入的url)和mappedUrl(要映射到的url)属性。

在本文结尾处将提供示例下载,它是一个asp.net 2.0的web应用程序,使用了Northwind数据库来显示产品信息。ProductsByCategory.aspx页需要两个参数,分别是CategoryID和CategoryName。然后这个页用一个Label控件来显示CategoryName,用一个GridView控件,和一个SqlDataSource控件来显示CategoryID所指向的产品的列表。所以,用户使用地址~/ProductsByCategory.aspx?CategoryID=1&CategoryName=Beverages来访问这个页面。

我们可以使用asp.net 2.0的url映射功能,来给用户提供一个友好的url,像~/Beverages.aspx这样的。我们在<urlMappings>元素中写8个映射,来为Northwind数据库中的每一个产品类建立一个友好的url。写完这些映射后,如果用想看饮料类的产品就可以通过地址~/ProductsByCategory.aspx?CategoryID=1&CategoryName=Beverages或~/Beverages.aspx来访问了。
<configuration>
   
   
<system.web>
        
    
<urlMappings enabled="true">
     
<add