0

可能重复:
ASP.NET MVC - 捕获所有路由和默认路由

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

4

1 回答 1

0

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

这可能会有所帮助: 返回 404 错误 ASP.NET MVC 3

于 2012-10-02T16:22:38.210 回答