ASP.NET Core 3 MVC 端点路由和路由本地化
ASP.NET Core 3 MVC endpoint routing and localization by route
我开始弄乱端点路由和 url 翻译,但我想我遗漏了一些东西。
我的解决方案是here
我从this blog post中的例子开始
在地址栏中写入 urls 可以正常工作,但我注意到锚标记根本不会生成 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}");
});
我不明白哪里出了问题。我读到有关端点路由的信息,当提供的值生成不存在的路由时,锚标记不会生成 urls,但上面的路由应该有效。
如果可能的话,有没有办法调试路由的验证方式或记录错误?
编辑: 问题现已解决,感谢 Rena。
我用修复更新了 my solution,并使用路由值添加了一个有用的组件来改变文化,希望这对每个会遇到和我一样的问题的人都有用。
该博客向我们展示了如何在您发送 request.But 时翻译 url 在您的情况下,您只想呈现 url,它应该添加路由模板来匹配它。
下面是一个简单的解决方法:
1.View:
@{
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.Startup.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
并且当您单击 link 时,它将进入 orders/list
操作
我开始弄乱端点路由和 url 翻译,但我想我遗漏了一些东西。
我的解决方案是here
我从this blog post中的例子开始
在地址栏中写入 urls 可以正常工作,但我注意到锚标记根本不会生成 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}");
});
我不明白哪里出了问题。我读到有关端点路由的信息,当提供的值生成不存在的路由时,锚标记不会生成 urls,但上面的路由应该有效。
如果可能的话,有没有办法调试路由的验证方式或记录错误?
编辑: 问题现已解决,感谢 Rena。 我用修复更新了 my solution,并使用路由值添加了一个有用的组件来改变文化,希望这对每个会遇到和我一样的问题的人都有用。
该博客向我们展示了如何在您发送 request.But 时翻译 url 在您的情况下,您只想呈现 url,它应该添加路由模板来匹配它。
下面是一个简单的解决方法:
1.View:
@{
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.Startup.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
并且当您单击 link 时,它将进入 orders/list
操作