【问题标题】:MVC routing issue, not falling through as the patterns match [duplicate]MVC 路由问题,在模式匹配时不会失败 [重复]
【发布时间】:2012-10-02 14:16:34
【问题描述】:

可能重复:
ASP.NET MVC - Catch All Route And Default Route

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

        routes.MapRoute(
            name: "CatchAll",
            url: "{id}",
            defaults: new { controller = "Home", action = "CatchAll", id = UrlParameter.Optional }
        );

是否有一种简单的方法可以实现以下路由模式。基本上,如果控制器不存在,我希望全部启动。如果这些页面存在于数据库中,则为这些页面动态填充这些页面。否则我会抛出一个错误。我不想要一条以其他任何东西开头的路线。例如

routes.MapRoute(
        name: "CatchAll",
        url: "Caught/{id}",
        defaults: new { controller = "Home", action = "CatchAll", id = UrlParameter.Optional }
    );

我可以让每个人单独工作,但让他们同时工作证明有点困难。我猜我需要在某个地方超载一些东西。那里一定有一位大师知道答案! :D

【问题讨论】:

  • 可能对您有帮助的类似问题:stackoverflow.com/questions/4001081/…
  • 谢谢@Zalk!我确实在寻找答案,老实说!虽然谢谢,但是限制它是!
  • 如果您发布您的解决方案@zalk,我会将您标记为正确答案。
  • 没关系,现在已经关门了,太晚了。但我很高兴你解决了它=)

标签: c# asp.net-mvc asp.net-mvc-routing


【解决方案1】:

就匹配而言,这两条路线实际上是同一件事。默认路由实际上是一个将用户定向到 Home.Index 的全部内容。如果控制器或操作不存在,则会引发 404 错误。您可以将 404 重定向到 Web 配置中的特定控制器。

这可能会有所帮助: Returning 404 Error ASP.NET MVC 3

【讨论】:

  • @Zalk 得到了正确的答案,它可以使用约束来完成,我传入现有的控制器,并且现在两个实例都可以工作。
猜你喜欢
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 2018-11-01
  • 2020-03-12
相关资源
最近更新 更多