2012-03-10 27 views
0

我創建了一個簡單的MVC3應用程序,然後添加以下路由以查看這樣的自定義路由是否有效。自定義路由對我來說不會失敗

routes.MapRoute("self", 
       "route/{message}", 
       new { controller = "Route", action = "Message" } 
       ); 

而且我用下面的網址 http://localhost:2554/Route/message ,但它不工作。

+0

這裏你期待在'route /'之後的url中有一個'{message}'參數,這意味着引擎將嘗試用一個接受'message'的參數尋找一個默認的動作'Message' – Oybek 2012-03-10 15:12:18

回答

2

你的Message動作是什麼樣的?它是否需要任何參數?他們是什麼類型的?

我懷疑你真正想要的東西,看起來像:

routes.MapRoute("self", 
      "route/{message}", 
      new { controller = "Route", action = "Message", message = UrlParameter.Optional } 
      ); 

,看起來動作像

public class RouteController 
    { 
     [HttpGet] 
     public ActionResult Message(int message) 
     { 
      ... 
     } 
    } 

從而使URL看起來像http://localhost:2554/route/1(或其他ID)

請注意,路線指定的順序很重要。這需要在默認路線生效之前。