我应该如何在路由配置中路由CMS URL和可选参数/操作

本文关键字:路由 参数 操作 URL CMS 配置 我应该 | 更新日期: 2023-09-27 18:23:45

我正在尝试向MVC网站添加一个基本的CMS,该网站使用"url格式的字符串"作为CMS项目的ID。

我花了很多时间试图满足下面列出的要求。但现在我想知道"有可能做到这一点吗?"

第一件事是,我想支持"开箱即用"的MVC URL。

/news => NewsController.Index - I will set this to get the latest X items
/news/create => NewsController.Create
/news/edit/8 => NewsController.Edit - uses 8 as the id parameter

但我也想支持/news/部分中的CMS项目,并通过纯文本URL进行过滤。

/news/news-item-title => NewsController.Display - uses "news-item-title" as an id parameter
/news/search/search-term => NewsController.Search - uses "search-term" as a string parameter

最后,我想要一个默认的控制器/操作来拾取没有定义控制器或操作的URL。(为了适应前斜线)。例如:

/services/consulting => CMSPageController.Index - defaults to CMSPage Controller and uses "services/consulting" as an id parameter
/about-us  = CMSPageController.Index - defaults to CMSPage Controller and uses "about-us" as an id parameter

这一切都有可能吗?还是我应该放弃对抗route_config?

我应该如何在路由配置中路由CMS URL和可选参数/操作

最终我在这里偶然发现了答案:

ASP.NET MVC CMS 的数据库动态路由

答案是提供一个自定义路由约束,用于检查数据库是否存在CMS url。