【发布时间】:2021-01-23 14:42:45
【问题描述】:
我正在开发各种学科的教育平台。在 Entity Framework Core 的帮助下,我设计了这样的数据库架构:
每个主题都属于一个类别,一个类别可以有一个或多个子类别(见附图)。
有了这些,我想实现如下路由:
/数学/积分/替代
/programming/paradigms/oop
/经济学/宏观/失业
例如。
/{类别}/{子类别}/{主题}
地点:
/mathematics(就像编程和经济学一样)是一个根类别(例如,没有父类别。它列出了所有与数学相关的子类别)
/integration 是一个子类别(其中还列出了所有与集成相关的主题)
/substitution 是一个主题
我尝试同时使用属性和常规路由以及区域,但在文件结构/复杂性中迷失了看似简单的任务...
到目前为止我的路线:
endpoints.MapAreaControllerRoute(
name: "mathematics",
areaName: "mathematics",
pattern: "mathematics/{controller=Home}/{action=Index}/{slug?}"
);
您将如何解决这个问题?我需要哪些控制器和操作?
请参阅https://isibalo.com 以供参考。它是捷克语,但你明白了。只需查看 URL 路由。他是怎么做到的?
【问题讨论】:
-
使用属性路由,将它们全部设为Route参数,但在前面添加一个段如'Article'或'Page'即为控制器。所以
PageController带有路由“page”,带有 HttpGet 属性的方法,路由“{a}/{b}/{c}”。 -
您还可以使用 IIS Url Rewrite 或 NGINX 等 URL 重写器在 URL 到达您的应用程序之前对其进行转换,例如将
knowna/b/c映射到foo?a=knowna&b=b&c=c -
@IanMercer 您的第一个建议帮助我摆脱困境并继续前进。足以消除混乱的信息。谢谢!
标签: c# asp.net-core entity-framework-core