如何将请求路由到页面控制器以获取ASP.NET MVC 4中不存在的路由

时间:2013-04-13 01:05:15

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

如何将请求路由到默认的PageController,以查找未映射到控制器或操作的路由?但对于与控制器或操作匹配的路由,使用ASP.NET MVC会使这些行为正常吗?

基本上我有一个我开发的CMS后端,我需要能够检查路由,查看它是否与存储在数据库中的页面路由匹配,如果是,则将请求转发给默认的PageController ,处理从数据库加载页面内容。还有CORE页面,它们确实有自己的控制器和动作,如果你输入的路由与数据库中的页面路由不匹配,我需要它恢复到ASP.NET MVC的默认行为,看看对于{controller} / {action}。

我在网上搜索和搜索过,运气不好,发现我怎么能这样做。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

设置您的路线,使现有控制器和操作的路由首先,然后有一个映射到您的PageController的catloll:

    // More specific routes go here

    routes.MapRoute(
        null,                                              
        "{controller}/{action}/{id}",                           // URL with parameters
        new { action = "Index", id = UrlParameter.Optional },   // Don't put a default for controller here
        // You need to constrain this rule to all of your controllers, so replace "ControllerA" with an actual controller name, etc
        new { controller = "ControllerA|ControllerB|ControllerC" } 
    );

    routes.MapRoute(
        null,
        "{*path}",
        new { controller = "Page", action = "Index" }
    );

第一条规则未匹配的任何内容以及您之前放置的任何规则都将回退到您的网页控制器,并在索引操作方法的path参数中使用路径。