2012-04-13 36 views
2

我知道是否想要獲取我可以使用的當前操作;從路徑數據獲取操作名稱

ControllerContext.RouteData.GetRequiredString("action") 

但是如果我的路線允許http://mydomain/this has spaces

我怎麼會得到 「This Has Spaces」 而不是 「ThisHasSpaces」?

這裏是我的路由表

 routes.MapRoute(
      "ThisHasSpaces", // Route name 
      "This Has Spaces", // URL with parameters 
      new { controller = "Home", action = "ThisHasSpaces", id = UrlParameter.Optional } // Parameter defaults 
     ); 
+0

你真的得到'ThisHasSpaces'? – jgauffin 2012-04-13 05:43:06

+0

是的,我這樣做是因爲這是控制器中的操作名稱,我的路由表將空間轉換爲無間隔版本 – griegs 2012-04-13 05:44:57

回答

2

片斷如果你的路線看起來像沒有任何東西可以給你原始的字符串(比Request.Uri除外),因爲你沒有真正的URI映射到一個路由參數。

既然你硬編碼你可以添加其他值的路徑:

routes.MapRoute(
     "ThisHasSpaces", // Route name 
     "This Has Spaces", // URL with parameters 
     new { controller = "Home", action = "ThisHasSpaces", orgstring = "This Has Spaces", id = UrlParameter.Optional } // Parameter defaults 
    ); 

拿去:

ControllerContext.RouteData.Values["orgstring"] 
+0

輝煌,謝謝 – griegs 2012-04-13 05:56:22

相關問題