2010-07-14 31 views
2

我使用下面的代碼從的RouteData如何從RouteData獲取Action信息?

獲得控制器/動作信息
RouteData route = RouteTable.Routes.GetRouteData(httpContext); 
string controller = route.GetRequiredString("controller"); 
string action = route.GetRequiredString("action"); 

但我應該在的情況下改變字符串「控制器」,在Global.asax.cs中的路線圖不具有部分與「控制器」如下:

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

謝謝!

回答

2

否。您的路線數據將始終具有「控制器」鍵。如果你看一下路線:

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

什麼得到由RouteTable.Routes.GetRouteData返回來自controller = "Home",而不是從"{NOTCONTROLLER}/{action}/{id}"。當你註冊一個路由時,無論是大括號中的什麼都被映射到動作中具有相同名稱的參數,除了{controller}{action}指定了一個控制器或動作。更詳細地閱讀MVC路由here

要玩弄路線並瞭解它們是如何工作的,請與Phil Haack's route debugger玩一玩。如果你被困在一個你無法弄清楚路線如何工作的情況下,這是非常寶貴的。

+0

謝謝,我真的很感激它! – Roy 2010-07-14 05:26:47