在 Asp.Net Core 中从数据库动态添加路由值参数

Dynamically add route value parameter from database in Asp.Net Core

我正在创建多租户应用程序,例如,每个图书馆只有一个数据库。

我想在路由中动态添加图书馆名称,例如,当用户试图获取所有书籍时 /Books/GetAllBooks,我必须添加图书馆名称,可以从数据库中检索,例如:/LibraryName/Books/GetAllBooks, 所以用户只能从他所属的图书馆获得所有书籍。

我该怎么办?实现我自己的 IRouter,我自己的模板路由,还有别的吗?

简单路径:

id 添加到您的 url。看url本题:

您可以将最后一个路径段更改为任何内容:

没有id:

实施IRouter。您将需要实施两种方法:

1) async Task RouteAsync(RouteContext context) 解析传入请求并将正确的 "controller"、"action" 和 "id" 值添加到 context.RouteData 集合中。稍后,MVC 将使用此信息调用您的控制器。

2) VirtualPathData GetVirtualPath(VirtualPathContext context) 为 controller+action+id 值构建 url(字符串),在 context.Values 集合中提供。

这可以帮助你: