在ASP.NET3.5的SP1版本中,包括了一个新的命名空间System.Web.Routing,该程序集下的各个类主要实现路由的定义、解析、匹配等功能。路由并不是专门为ASP.NET MVC框架服务的,它也同样可以运行在WebForm程序上。
    

Route类

 

     Route类是抽象类RouteBase的子类,在Route类中,设置了路由的5个基本属性它们分别是,路由的约束Constraints、路由的命名空间DataTokens、路由参数的默认值Defaults、路由处理程序RouteHandler及路由URL;并且定义了4个重载的构造函数。

路由解析示意图

通过实例我们来了解下路由

实例一默认路由

当我们打开VS2010新建一个ASP.NET MVC项目是在Global.asax中会看到以下代码:

 

 public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute(
"{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

}

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterRoutes(RouteTable.Routes);
}
通过上面的代码我们看出,RoutTable类的静态属性Routes,可以获得RouteCollection类的实例化对象。利用之一特性,可以在
Global.asax文件中设置多个路由,其中RegisterRoutes(RouteTable.Routes);使用了RouteTable.Routes属性,以便
获得RouteCollection类的实例化对象并通过routes.MapRoute()方法在集合中添加新的路由。
我们说一下routes.MapRoute()方法
在RouteCollectionExtensions类中,对路由集合类RouteCollection扩展了俩类方法他们分别是IgnoreRoute()、MapRoute()方法
IgnoreRoute()方法主要用于设置不需要使用路由解析的URL,有2个重载方法;MapRoute()方法用于设置各个路由,共6个重载方法。

 

 

 

 

 

 


posted on 2010-11-27 13:57  异样的世界  阅读(1780)  评论(1编辑  收藏  举报