ASP.NET MVC切换语言,如何实现? [英] ASP.NET MVC switch language, how to implement?

查看:19
本文介绍了ASP.NET MVC切换语言,如何实现?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开始将我的简单网站转换为ASP.NETMVC,只是为了摆弄它。我在那里有一个切换语言功能,基本上是将会话["Language"]设置为另一种语言并刷新页面。如果这可以做得更好,请纠正我,但我已经为此制作了两个控制器,并在那里设置会话。问题在于末尾的布线。我可以以某种整齐的方式刷新页面吗,或者我可以获取当前的操作并将其重新路由到该操作吗?或者这更像是一种适用于AJAX的场景?

感谢您的建议!

推荐答案

您使用会话变量有什么原因吗?更常见的解决方案是在路线中包含语言代码,即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>    

这些链接将呈现为指向您所在页面的链接-只有更改了语言。

这篇关于ASP.NET MVC切换语言,如何实现?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆