2012-10-02 22 views
0

可能重複:
ASP.NET MVC - Catch All Route And Default RouteMVC路由問題,而不是通過掉落的模式匹配

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "CatchAll", 
      url: "{id}", 
      defaults: new { controller = "Home", action = "CatchAll", id = UrlParameter.Optional } 
     ); 

有implemeting以下路由模式的一個簡單的方法。基本上,如果控制器不存在,我希望抓住所有的東西。如果這些頁面存在於數據庫中,則會爲這些頁面動態填充這些頁面。其他明智的我會拋出一個錯誤。我不想要一條以其他任何東西開始的路線。例如

routes.MapRoute(
     name: "CatchAll", 
     url: "Caught/{id}", 
     defaults: new { controller = "Home", action = "CatchAll", id = UrlParameter.Optional } 
    ); 

我可以得到它,以便每個工作單獨但讓他們在同一時間工作證明有點困難。我猜我需要在某處重載某些東西。那裏肯定有一位古茹知道答案! :D

+2

類似的問題可以幫助你:http://stackoverflow.com/questions/4001081/asp-net-mvc-catch-all-route-and-default-route – Niklas

+0

謝謝@Zalk!我確實尋找答案,誠實!邦雖然感謝,約束它! – Adween

+0

如果你發佈你的解決方案@zalk我會將你標記爲正確的答案。 – Adween

回答

0

就匹配而言,這兩條路線實際上是相同的東西。默認路由實際上是將用戶引導到Home.Index的一切。如果控制器或操作不存在,則會引發404錯誤。您可以將404重定向到Web配置中的特定控制器。

這可能會有所幫助: Returning 404 Error ASP.NET MVC 3

+0

@ Zalk得到了答案的權利,它可以使用約束,我傳遞存在的控制器,並繁榮現在工作的兩個實例。 – Adween