为了账号安全,请及时绑定邮箱和手机立即绑定

路由和url中的ASP.NETMVC 5文化

路由和url中的ASP.NETMVC 5文化

慕容森 2019-06-12 16:38:20
路由和url中的ASP.NETMVC 5文化我已经翻译了我的MVC网站,这是很好的工作。如果我选择另一种语言(荷兰语或英语),内容将被翻译。这是因为我在会话中设置了文化。现在我想在url中显示所选的区域性(=区域性)。如果它是默认语言,它不应该显示在url中,只有当它不是默认语言时,它才应该显示在url中。例如:默认区域性(荷兰语):site.com/foo site.com/foo/bar site.com/foo/bar/5对于非默认文化(英文):site.com/en/foo site.com/en/foo/bar site.com/en/foo/bar/5我的问题我总是看到这个:site.com/nl/foo/bar/5,即使我点击了英语(见_Layout.cs)。我的内容被翻译成英文,但url中的路由参数保留在“nl”而不是“en”上。我怎么能解决这个问题,或者我做错了什么?我尝试在global.asax中设置RouteData,但没有帮助。  public class RouteConfig   {     public static void RegisterRoutes(RouteCollection routes)     {       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");       routes.IgnoreRoute("favicon.ico");       routes.LowercaseUrls = true;       routes.MapRoute(         name: "Errors",         url: "Error/{action}/{code}",         defaults: new { controller = "Error", action = "Other", code = RouteParameter.Optional }         );       routes.MapRoute(         name: "DefaultWithCulture",         url: "{culture}/{controller}/{action}/{id}",         defaults: new { culture = "nl", controller = "Home", action = "Index", id = UrlParameter.Optional },         constraints: new { culture = "[a-z]{2}" }         );// or maybe: "[a-z]{2}-[a-z]{2}       routes.MapRoute(           name: "Default",           url: "{controller}/{action}/{id}",           defaults: new { culture = "nl", controller = "Home", action = "Index", id = UrlParameter.Optional }       );     }Global.asax.cs:  protected void Application_Start()     {       MvcHandler.DisableMvcResponseHeader = true;       AreaRegistration.RegisterAllAreas();       FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);       RouteConfig.RegisterRoutes(RouteTable.Routes);       BundleConfig.RegisterBundles(BundleTable.Bundles);     }
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 510 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信