您使用会话变量有什么原因吗?更常见的解决方案是在路由中包含语言代码,即 blah.com/en/info 或 blah.com/jp/info(英语和日语)
如果您这样做,网站上的每个页面都可能包含指向每种语言的链接。如果您正在编写一个可公开访问的网站,这也可以让 Google 更轻松地为您的所有内容编制索引。
这篇文章解释了如何在域中包含语言,即。 en.blah.com 或 jp.blah.com:http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx
更新:这是一个在 URL 路由中包含语言代码的简单示例。
更改默认路由以包含语言参数:
routes.MapRoute(
"Default",
"{language}/{controller}/{action}/{id}",
new { language = "en", controller = "Home", action = "Index", id = "" }
);
将每种语言的链接添加到您的母版页:
<li><%= Html.ActionLink(
"Spanish",
ViewContext.RouteData.Values["action"].ToString(),
new { language = "es" })%></li>
<li><%= Html.ActionLink(
"French",
ViewContext.RouteData.Values["action"].ToString(),
new { language = "fr" })%></li>
<li><%= Html.ActionLink(
"English",
ViewContext.RouteData.Values["action"].ToString(),
new { language = "en" })%></li>
这些将呈现为返回您所在页面的链接 - 仅更改语言。