MVC的地址重寫必須在Global.asax.cs中初始化,從而保證所有的請求都能被Controller控制。簡單的意思就是必須在運行期,應用程序啓動的時候被初始化。爲什麼要到運行期,而不發生在編譯器,爲什麼不能用靜態構造函數來完成呢?那是因爲編譯期連地址都沒確定,怎麼能夠保證地址是正確的呢?
在Global.asax.cs中默認有兩個重寫方法被註冊
1 protected void Application_Start(object sender, EventArgs e)
2 {
3 // Note: Change Url= to Url="[controller].mvc/[action]/[id]" to enable
4 // automatic support on IIS6
5
6 RouteTable.Routes.Add(new Route
7 {
8 Url = "[controller]/[action]/[id]",
9 Defaults = new { action = "Index", id = (string)null } ,
10 RouteHandler = typeof(MvcRouteHandler)
11 });
12
13
14 RouteTable.Routes.Add(new Route
15 {
16 Url = "Default.aspx",
17 Defaults = new { controller = "Home", action = "Index", id = (string)null },
18 RouteHandler = typeof(MvcRouteHandler)
19
2 {
3 // Note: Change Url= to Url="[controller].mvc/[action]/[id]" to enable
4 // automatic support on IIS6
5
6 RouteTable.Routes.Add(new Route
7 {
8 Url = "[controller]/[action]/[id]",
9 Defaults = new { action = "Index", id = (string)null } ,
10 RouteHandler = typeof(MvcRouteHandler)
11 });
12
13
14 RouteTable.Routes.Add(new Route
15 {
16 Url = "Default.aspx",
17 Defaults = new { controller = "Home", action = "Index", id = (string)null },
18 RouteHandler = typeof(MvcRouteHandler)
19