如何永久地改变语言?

时间:2012-11-22 03:52:18

标签: c# asp.net-mvc-3 routes

我有一个问题。我在这里阅读了一篇关于如何通过向控制器发送参数来更改语言的文章,然后控制器可以处理更改。

这是我读过的内容:

首先:添加路线

routes.MapRoute(
"Default", 
"{language}/{controller}/{action}/{id}", 
new { language = "en", controller = "Home", action = "Index", id = "" }
);

第二:使用ActionLink发送参数

<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>

现在,我已经尝试过这个解决方案并且工作正常。但是,它只能工作一次。我的意思是,如果你点击法语,它将显示法语页面。但页面上的其余链接仍然指向默认的“en”。

如何将默认的“语言”值更改为所选语言,以便所有链接都使用所选的新语言?

2 个答案:

答案 0 :(得分:1)

如果您希望“记住”选择,那么您将需要使用存储初始选择的方法。

因此,您的主要选项是使用cookie或将选择存储在会话变量中。

答案 1 :(得分:0)

使用资源文件似乎是实现此目的最有效的方法。您需要存储要在资源文件中显示在页面上的所有文本,并且您必须为要支持的所有语言创建单独的资源文件。您的页面上的内容将根据浏览器上应用的语言设置从资源文件中引用。

关于codeproject的以下文章非常清楚地证明了这一点:

http://www.codeproject.com/Articles/181738/Creating-a-Bilingual-ASP-NET-MVC3-Application-Part

相关问题