2014-09-19 104 views
2

我想有控制器/動作,這樣,當我瀏覽到:ASP.NET MVC野生卡控制器的任何參數路由

mysite.com/whatever. i type here will pipe into...a ! string. 

public ActionResult Index(string anything) 
{ 
    // anything = whatever. i type here will pipe into...a ! string. 
    return View(); 
} 

我需要建立一個自定義的路線?

我已經試過這一點,但它似乎沒有處理週期等

 routes.MapRoute(
      name: "Default", 
      url: "{*anything}", 
      defaults: new { controller = "Home", action = "Index" } 
     ); 
+0

這是因爲一段時間導致IIS接管並嘗試靜態地服務它認爲是一個文件,而不是將它交給MVC。 – 2014-09-19 19:15:48

+0

我從來沒有嘗試過,但屬性路由可能是你可以看看的東西。不知道是否會像克里斯說的那樣。 – Gjohn 2014-09-19 19:25:48

+0

感謝我的想法,我還沒有想出一個理想的解決方案。盒子裏有什麼東西嗎? – aherrick 2014-09-20 13:03:44

回答

2

如果你限制你的路線有一個包羅萬象的正則表達式:

routes.MapRoute(
    "Default", 
    "{*anything}", 
    new { controller = "Home", action = "Index" }, 
    new { anything = @"^(.*)?$" } 
); 

,並確保您具有UrlRoutingModule set up in your web.config with no precondition以確保即使未管理的請求(例如那些被認爲具有擴展名的請求)通過路由模塊,您的catchall路徑應該工作正常。