ASP.NET MVC Framework体验(5):路径选择(URL Routing)2011-05-04TerryLee概述在传统的ASP.NET应用程序中,发生一个请求之后将映射到一个.aspx文件,且会 对应到一个具体的物理aspx文件。ASP.NET MVC Framework中,进入一个请求之后,不再是 映射到.aspx文件,而是由MVC Framework中提供的路径选择引擎,映射到正确的Controller 和Action执行请求。ASP.NET MVC Framework中URL路径映射规则定义在Global.asax中,这 在一定程序上带来了很多的灵活性,如果想要修改URL应用结构的话,只需要修改一下映射 规则即可,并不需要修改Controller和View中的代码,但是这仍然不够灵活。改变 Global.asax代码仍然会导致应用程序的重新编译,本篇文章末尾部分将会介绍如何通过 HttpModule定义映射规则在Web.config中。理解路径选择先看一下下面这幅图:

从上图中可以看到,发生一个请求之后,第一步就是路径选择,而映射规则是通 过在Routes集合中添加Route实例来注册的,如:
RouteTable.Routes.Add (
      new Route
      {
        Url = "[controller]/[action]",
        Defaults = new { action = "Index"},
        RouteHandler = typeof (MvcRouteHandler)
      });Route中有四个属性,它的定义如下 :
public class Route
{
  public Route();
   public Route(string url, Type routeHandler);
  public Route(string url, object defaults, Type routeHandler);
  public object Defaults { get; set; }
  public Type RouteHandler { get; set; }
  public string Url { get; set; }
  public object Validation { get; set; }
}