2011-09-20 56 views
1

我想將多個url映射到1個動作,但我只想要1個路由。在asp.net中將多條路線映射到1個動作mvc

例如,

routes.MapRoute(
    "SingleUser_Long", 
    "Users/{username}", 
    new { controller = "Users", action = "SingleUser" }); 

routes.MapRoute(
    "Users", 
    "{username}", 
    new { controller = "Users", action = "SingleUser" }); 

有沒有辦法讓這2合1?當我不得不添加更多內容並保留複製/粘貼副本時,它會變得枯燥乏味,只能添加url的「用戶」。

+0

您要添加「用戶」的url盈?這不會自動發生,因爲您的控制器被命名爲「用戶」? –

+0

現在Urls的localhost/Users/1'和'localhost/1'映射到SingleUser操作。但是正如你所看到的,它需要2 MapRoute,是否有可能在1? –

回答

1
routes.MapRoute("SingleUser", 
     "{controller}/{username}", 
     new { controller = "Users", action = "SingleUser", 
       controller = UrlParameter.Optional }, 
     new { controller = @"/(^\s*)|\bUsers\b"} 

使用約束來限制「{}控制器」是空的或「用戶」而已。(不知道正則表達式是正確的)