概述
在傳統的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; }
}