如何在多语言asp.net MVC网站中支持URL中有和没有语言的路由

时间:2013-11-26 12:04:12

标签: asp.net-mvc localization asp.net-mvc-routing

尝试为我当前的mvc项目设置本地化。 我需要配置路由以支持两个网址:包含和不包含语言(例如www.domain.com/en/about/contacts和www.domain.com/about/contact)。默认语言的URL中没有lang的路由。

我以这种方式定义路线

            routes.MapRoute(
            name: "Localization",
            url: "{lang}/{controller}/{action}/{identifier}",
            defaults: new { lang = defaultLang, controller = "Home", action = "Index", identifier = UrlParameter.Optional }
        );

但是我无法满足一个重要的要求 - 我的默认语言路由应该只在URL中“lang-less”,直到用户指定所需的语言。即使该语言== defaultLanguage我需要我的路由包括它(lang),因为它是由用户选择的。

1 个答案:

答案 0 :(得分:0)

解决!

@ Localization @ Route应如下所示:

routes.MapRoute(
            name: "Localization",
            url: "{lang}/{controller}/{action}/{identifier}",
            defaults: new { controller = "Home", action = "Index", identifier = UrlParameter.Optional },
            constraints: new { lang = @"[a-z]{2}" }
        );
  • 不应为lang
  • 提供默认值
  • 我需要为lang添加约束以帮助路由器识别包含和不包含lang_s的URL