1

对于未映射到控制器或操作的路由,如何将请求路由到默认 PageController?但是对于匹配控制器或操作的路由,它们的行为是否正常,使用 ASP.NET MVC?

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

我已经在网上搜索和搜索,没有太多运气找到我能做到这一点。任何帮助将不胜感激。

4

1 回答 1

2

设置你的路由,让现有控制器和动作的路由优先,然后有一个映射到你的 PageController 的包罗万象:

    // 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您的索引操作方法的参数中。

于 2013-04-13T01:17:10.170 回答