我已经开始将我的简单网站转换为ASP.NET MVC,只是为了弄乱它。我有一个切换语言功能,基本上将会话[“language”]设置为另一种语言并刷新页面。请更正我,如果这可以做得更好,但我已经做了两个控制器,并设置会议在那里。问题是最后的路由。我可以以一些整洁的方式刷新页面,还是可以得到当前的Action并重新路由呢?或者这更像是Ajax的场景?
感谢咨询!
解决方法
有什么原因你使用会话变量吗?一个更常见的解决方案是在路线中包含语言代码,即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
UPDATED:这是一个简单的例子,包括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",new { language = "fr" })%></li> <li><%= Html.ActionLink( "English",new { language = "en" })%></li>