[英]ASP.NET Core 3 MVC endpoint routing and localization by route
我开始搞乱端点路由和 url 翻译,但我认为我错过了一些东西。
我的解决方案在这里
我从这篇博文中的例子开始
在地址栏中写入网址按预期工作,但我注意到锚标签根本不会生成 url。
布局示例
@{
Dictionary<string, string> routePol = new Dictionary<string, string>();
routePol.Add("language", "pl");
routePol.Add("controller", "Home");
routePol.Add("action", "Index");
}
<a asp-all-route-data="routePol">Poland</a>
应该生成
<a href="test/pl/Home/Index">Poland<a>
结果
<a href >Poland<a>
主要端点
app.UseEndpoints(endpoints =>
{
endpoints.MapDynamicControllerRoute<TranslationTransformer>(
"{language=pl}/{controller=orders}/{action=list}");
});
我不明白出了什么问题。 我通过端点路由阅读了这一点,当提供的值生成不存在的路由时,锚标记不会生成 url,但上面的路由应该是有效的。
如果可能的话,有没有办法调试如何验证路由或记录错误?
编辑:问题现在解决了,感谢 Rena。 我通过修复更新了我的解决方案,并使用路由值添加了一个有用的文化改变组件,希望这对遇到与我相同的问题的每个人都有用。
该博客向我们展示了如何在您发送请求时翻译 url。但在您的情况下,您只想渲染 url,它应该添加路由模板以匹配它。
这是一个简单的解决方法,如下所示:
1.查看:
@{
Dictionary<string, string> routePol = new Dictionary<string, string>();
routePol.Add("language", "pl");
routePol.Add("controller", "zamowienia");
routePol.Add("action", "lista");
}
@*controler name and action name should be the key name in TranslationDatabase
not the value name.*@
<a asp-all-route-data="routePol">Poland</a>
2.启动.cs:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{language=pl}/{controller=orders}/{action=list}");
endpoints.MapDynamicControllerRoute<TranslationTransformer>(
"{language=pl}/{controller=orders}/{action=list}");
});
它将生成 url: /pl/zamowienia/lista
并且当您单击链接时,它将进入orders/list
操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.