有谁知道在ASP.NET MVC中本地化路由的好办法吗?我想要实现的是这两个urls指向相同的操作/资源:
此外,还应该可以根据当前文化(如果没有可用的翻译,则为默认文化)生成路由。或者,如果我能够指定一个区域性,这样上面的两个链接中只有一个可以工作,那也是可行的。
我尝试了very nice approach by Maarten Balliauw,但不幸的是,他的解决方案不适用于Html.RenderAction(...)
。
当然,我可以只为所有翻译添加路由,比如
routes.MapRoute(
"Products_Categories",
"Produkte/Kategorien",
new { controller = "Products", action = "Categories" }
);
但这最终会导致大量的路由,而且非常不灵活。任何更好的解决方案都将不胜感激:-)越灵活越好。
发布于 2011-07-01 07:33:03
这可能是管理所有路径或其某些变体的可行方法,例如在XML文件中定义路径
http://www.iansuttle.com/blog/post/ASPNET-MVC-Store-Routes-in-the-Database.aspx
您最终仍然会有大量的路由,但是管理它们将会简单得多
发布于 2012-03-12 11:14:40
你可以试试我刚刚找到的一个很棒的AttributeRouting项目!你可以通过NuGet获取它。
发布于 2018-07-16 15:59:38
有关基于属性和传统路由的的简单解决方案,请访问https://github.com/boudinov/mvc-5-routing-localization
您可以将其与/de前缀一起使用,因为它是首选模式。您需要在资源文件中将'Products‘和'Categories’翻译成德语:
LocalizedRoute(“~/产品/类别”,translateUrl: true ActionResult索引(...)
或者对原始问题的工作答案,没有语言前缀,你可以得到这样的结果:
LocalizedRoute("~/Products/Categories",translateUrl: false,explicitCulture:"en") ActionResult索引(...)
https://stackoverflow.com/questions/6228366
复制相似问题