如何解决通过数据库动态提供路由
使用带有实体框架核心的 Asp .Net Core 3.0 MVC 。我想在数据库中保存这样的数据集:
每个数据集在以后应该是可路由的端点,在此示例中,我想要:
- wwww.example / test
- www.example / test2
- www / example / test3
我有以下要求。
我的以下方法是通过DynmaicController。
启动(使用MapDynamicControllerRoute):
endpoints.MapDynamicControllerRoute<UrlDynamicRouteGenerator("{Name}/{controller=Event}/{action=LandingPage}");
UrlDynamicRouteGenerator:
public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext,RouteValueDictionary values)
{
var name = values["Name"] as string; // if you request www./example/test5 => values["Name"] = test5
values["id"] = 2; // is name in the db --> return id/guid if it exits,else 0
// not in the db id = 0 => show error page
if((int)values["id"] == 0)
{
values["controller"] = "ErrorController";
values["action"] = "Index";
return values;
}
// go to controller "event" and action "landingpage"
else
{
values["controller"] = "Event";
values["action"] = "LandingPage";
return values;
}
}
使用此方法后,您将转发到已定义的控制器和操作。
我的问题是,还有另一种更好的方法来做到这一点吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。