【问题标题】:How can I make two MVC routes starting with different path names use the same controller in MVC4如何使以不同路径名开头的两条 MVC 路由在 MVC4 中使用相同的控制器
【发布时间】:2013-06-11 00:41:11
【问题描述】:

我有以下路线:

   routes.MapRoute(
      name: "One",
      url: "admin/{id}",
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
   );
   routes.MapRoute(
      name: "Two",
      url: "home/{id}",
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
   );

有没有一种方法可以将这些路由组合成一个路由,它们都指向“Home”控制器?

【问题讨论】:

  • 嗨杰森。标题听起来像是重复的,但我的问题不同,而且您链接到的问题也没有被接受的答案:-(

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 routes


【解决方案1】:

试试

 routes.MapRoute(
           name: "Default2",
           url: "{section}/{id}",
           defaults: new {section="home" ,controller = "Home", action = "Index", id = UrlParameter.Optional }
       );

为我工作

回答评论。 添加约束有什么问题?

 routes.MapRoute(
           name: "Default2",
           url: "{section}/{id}",
           defaults: new { section = "home", controller = "Home", action = "Index", id = UrlParameter.Optional },
           constraints: new { section = "admin|home" }
       );

【讨论】:

  • maxs87 - 问题是如果路线以 home 或 admin 开头,我只想让它工作:-(我不希望它与其他词一起工作。
  • @Gemma 他添加了一个约束,以便它是管理员或家庭
  • 我看到添加了一个约束,但我想知道这是一种有效的方法。感觉就像我把所有东西都放进去然后检查它是否匹配。是否没有一个选项可以在前端使用“admin | home”进行过滤。我不是在质疑这可能只是想知道任何其他选择。还想知道如果我运行 Phil Hack 创建的路由检查器,这将如何工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
  • 1970-01-01
相关资源
最近更新 更多