2011-09-20 50 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"} 

使用约束来限制“{}控制器”是空的或“用户”而已。(不知道正则表达式是正确的)