问题描述
使用带有实体框架核心的 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 (将#修改为@)