セッション変数を使用している理由はありますか?より一般的な解決策は、ルートに言語コードを含めることです。つまり、blah.com / en /infoまたはblah.com/jp/info(英語と日本語の場合)
これを行うと、サイトのすべてのページに各言語へのリンクが含まれる可能性があります。あなたが公的にアクセス可能なサイトを書いているなら、これはまたグーグルがあなたのすべてのコンテンツを索引付けすることをより簡単にするでしょう。
この記事では、ドメインに言語を含める方法について説明します。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>
これらは、言語が変更された場合にのみ、現在のページに戻るリンクとしてレンダリングされます。