我正在使用.NET Framework 4中的EF 5在asp.net mvc 4(感謝Azure不是4.5)。 我試圖讓用戶通過按下一個按鈕來改變當前的語言設置。需要更改的內容保存在資源文件中。更改文化上的actionlink點擊沒有刷新資源文件的頁面
首先我得到的瀏覽器設置在我的web.config
<globalization culture="auto" uiCulture="auto"/>
然後我嘗試通過超鏈接進行更改。 下面是我使用的鏈接的例子:
<li>@Html.ActionLink("FR", "ChangeLanguage", "Account", new { language = "fr" }, null)</li>
<li>@Html.ActionLink("EN", "ChangeLanguage", "Account", new { language = "en" }, null)</li>
<li>@Html.ActionLink("NL", "ChangeLanguage", "Account", new { language = "nl" }, null)</li>
以下是我填的文字:
@Html.Encode(MyProject.Web.Resources.General.Header_UserBadge_SettingsDeleteCurrentPicture)
這裏就是他們連接到控制器動作:
public ActionResult ChangeLanguage(string language)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(language);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
}
資源文件命名爲:
- General.fr.resx =>法國
- General.resx =>英語
- General.nl.resx =>荷蘭
現在很明顯,這是行不通的。我似乎無法找到我想要做的事情的任何例子。我可以找到的所有示例刷新頁面。
所以我有2個問題:
- 可以這樣做?如果是的話,我做錯了什麼或是什麼?
- 如果這不能完成,那麼什麼是一個好的解決方案?目前在動作結束時重定向似乎並未改變語言設置。
謝謝您的回覆。問題是我不能在部分視圖中製作整個GUI。由於我目前在部分視圖中也有我的佈局和菜單,因此我必須使用javascript或ajax加載每個頁面。 (除非我在這裏錯了)。編輯:佈局和菜單部分還包含需要更改用戶語言的元素,所以使我的意見部分意見將意味着我將不得不重新加載它們。這是我重新加載的整個頁面,這正是我想要反對的。 – whodares
這**可能**幫助http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx – Yasser