【问题标题】:Map multiple routes to 1 action in asp.net mvc将多个路由映射到 asp.net mvc 中的 1 个操作
【发布时间】:2011-09-20 18:43:11
【问题描述】:

我想将多个 url 映射到 1 个操作,但我只想要 1 个路由。

例如。

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

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

有没有办法可以将这 2 合二为一?当我必须添加更多内容并保留复制/粘贴重复项时,它变得乏味,只是在 url 前面添加“用户”。

【问题讨论】:

  • 您想在网址前添加“用户”吗?这不会自动发生,因为您的控制器被命名为“用户”吗?
  • 现在 Urls 'localhost/Users/1' 和 'localhost/1' 映射到 SingleUser 操作。但是如您所见,它需要2个MapRoute,是否可以在1个中完成?

标签: asp.net-mvc asp.net-mvc-3 routing


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

使用约束将“{controller}”限制为空或仅“用户”。(不确定正则表达式是否正确)

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 2010-09-05
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多