如果Controller操作不存在,则自定义路由mvc4

时间:2013-01-04 14:33:56

标签: c# asp.net-mvc-3 asp.net-mvc-4

我想要发生的是,如果用户导航到Controller Action这样的Home/Index页面并且操作存在,则正常继续。但是,如果用户导航到不存在的Controller Action Home/NotExist,那么我想将其默认为名为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 我之前尝试过该路线,但却抛出错误

1 个答案:

答案 0 :(得分:0)

您应该让自定义路线成为最后定义的路线。在这种情况下:

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" }
     );