2011-05-18 94 views
6

如何配置ASP.NET MVC 3路由,以便它不會顯示url中的控制器?在url中沒有控制器的MVC路由

這裏是我的路線

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

     routes.MapRoute(
      "HomeActions", 
      "{action}", 
      new { action= "AboutUs" } 
     ); 

我需要網址:

mysite.com/AboutUs 

但我有

mysite.com/Home/AboutUs 

回答

6

您需要添加路由沒有{controller}部分,並指定控制器名稱在defaults參數中。

+0

不是一個錯誤的答案,但可能更具體。隱藏控制器名稱會產生後果。 – NerdFury 2011-05-18 15:36:31

+0

感謝您的回答,但它並不奏效。我試試:routes.MapRoute( \t「HomeActions」,「{action}」,new {controller =「Home」}); – Victoria 2011-05-18 15:36:54

+0

@維多利亞:你需要把它放在其他路線之前,否則將永遠不會到達(因爲其他路線首先匹配網址) – SLaks 2011-05-18 15:47:51

18

我會非常具體的關於你想要路由的網址。並將其放置在默認路線上方。

routes.MapRoute(
     "HomeActions", 
     "AboutUs", 
     new { controller = "Home", action= "AboutUs" } 
    ); 

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

對於您所建議的路線不太具體,可能會產生不必要的後果。特別是如果在默認路由下面列出。

routes.MapRoute(
    "HomeActions", 
    "{action}", 
    new { controller = "Home", action= "AboutUs" } 
); 

例如,如果上述線路是默認之後加入,則URL http://www.example.com/AboutUs將可能匹配的路由{控制器=「關於我們」,動作=「索引」,ID = UrlParamter.Optional}。如果您將路由添加到默認路由之上,那麼查找您可能希望成爲用戶控制器上的索引操作的url http://www.example.com/Users現在將查找主控制器上的用戶操作。

所以,我會建議具體說明這樣的路線。

+0

謝謝,你是對的! – Victoria 2011-05-18 15:49:32

+0

也爲我工作。 – Rolice 2012-05-10 11:11:47