我希望大量自定义我的应用程序处理路由的方式。本质上,我想实现这样的过程:
- 用户请求 URL:/custom-url-part-1/custom-url-part-2/gallery/1/date
- 应用程序在 Routes 的数据库表中查找匹配项
- 应用程序返回匹配的路由记录,包括:
- 路由网址
- 控制器
- 行动
- 参数
- 默认值
- 应用程序查看 RouteUrl 并解析任何可选参数 {pagenum}、{orderby}
- 应用程序检查这些是否已在请求的 Url 中提供
- 如果没有提供它们,它会检查 Route 记录的“默认值”以获取它们
- 然后这些在 RouteData 默认值中传递
- 参数在 RouteData 默认值中传递
- 返回路由数据
这样做的核心原因是我想要一个动态的路由表,由 CMS 修改,以便针对路由存储某些数据。
我的问题是:
如何复制 MVC 将 Uri 匹配到 Route 的方式?我基本上需要查看数据库表并根据 Uri 带回适当的 Route。与标准 ASP.NET MVC 功能通过 RouteCollections 进行查看并使用正确路由的方式非常相似。
我意识到我实际上是在重写 MVC 内置的一些功能,并用数据库替换 RoutesCollection ......但我需要这样做以实现两件事:
- 路线完全是动态的、流动的并由 CMS 控制。
- 针对那些无法从 Uri 本身推断出的路由存储的数据(例如,我可能希望在用户点击特定路由时发送一个 PageId,但我不希望 Uri 中的那个 PageId)。