如何在多语言 asp.net MVC 网站的 URL 中支持有语言和无语言的路由
Posted
技术标签:
【中文标题】如何在多语言 asp.net MVC 网站的 URL 中支持有语言和无语言的路由【英文标题】:How to support routes with and without language in URL in multilingual asp.net MVC website 【发布时间】:2013-12-11 13:36:01 【问题描述】:尝试为我当前的 mvc 项目设置本地化。 我需要配置路由以支持这两个 url:有和没有语言(例如 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 中应该是“无语言”,直到用户指定所需的语言。即使该语言 == defaultLanguage 我需要我的路线包含它(语言),因为它是由用户选择的。
【问题讨论】:
【参考方案1】:解决了!
@Localization@ 路由应如下所示:
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
【讨论】:
以上是关于如何在多语言 asp.net MVC 网站的 URL 中支持有语言和无语言的路由的主要内容,如果未能解决你的问题,请参考以下文章