4

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

这是我读过的:

第一:添加路线

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

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

4

2 回答 2

1

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

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

于 2012-12-19T13:21:17.567 回答
0

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

以下关于 codeproject 的文章很好地展示了它:

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

于 2012-11-22T04:36:26.173 回答