路由和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
提交
取消