如果控制器动作不存在,则自定义路由mvc4

本文关键字:自定义 路由 mvc4 不存在 控制器 如果 | 更新日期: 2023-09-27 17:50:45

我想要发生的是,如果用户导航到Controller Action页面,如Home/Index和操作存在,然后继续正常。但是,如果用户导航到不存在Home/NotExistController Action,那么我想将其默认为名为MyController的"默认"控制器。

我尝试在接受*url*的标准默认路由之前添加路由

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

但是Home/Index会选择CustomRoute而不是默认的

N。B我试过把路由后,它抛出一个错误

如果控制器动作不存在,则自定义路由mvc4

你应该让你的自定义路由是最后定义的路由。在本例中:

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