如何将请求路由到默认的PageController,以查找未映射到控制器或操作的路由?但对于与控制器或操作匹配的路由,使用ASP.NET MVC会使这些行为正常吗?
基本上我有一个我开发的CMS后端,我需要能够检查路由,查看它是否与存储在数据库中的页面路由匹配,如果是,则将请求转发给默认的PageController ,处理从数据库加载页面内容。还有CORE页面,它们确实有自己的控制器和动作,如果你输入的路由与数据库中的页面路由不匹配,我需要它恢复到ASP.NET MVC的默认行为,看看对于{controller} / {action}。
我在网上搜索和搜索过,运气不好,发现我怎么能这样做。任何帮助将不胜感激。
答案 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
参数中使用路径。