C# 我应该如何在路由配置中将CMS URL与可选参数/操作一起路由?

C# 我应该如何在路由配置中将CMS URL与可选参数/操作一起路由?,c#,asp.net-mvc,url,content-management-system,asp.net-mvc-routing,C#,Asp.net Mvc,Url,Content Management System,Asp.net Mvc Routing,我正在尝试向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 => N

我正在尝试向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

所有这些都是可能的,还是我应该放弃战斗路线配置?

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

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