2016-12-14 13 views
0
public class LanguageController : Controller 
{ 
    public ActionResult SetLanguage(string name) 
    { 
     Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(name); 
     Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 

     HttpContext.Current.Session["culture"] = name; 

     return RedirectToAction("Index", "Home"); 
    } 
} 

然後在您的視圖:ASP.NET MVC5更改語言/文化通過點擊HTML

<a href="@Url.Action("SetLanguage", "Language", new { @name = "pl" })">Polski</a> 
<a href="@Url.Action("SetLanguage", "Language", new { @name = "en" })">English</a> 

我用上面的代碼來設置語言在我看來,不過這次如果我們兩個按鈕點擊每個按鈕語言會相應改變。但是我需要這樣做,就像一個按鈕一樣,如果用戶選擇語言作爲英語按鈕必須更改爲法語,並且如果用戶選擇語言作爲法語按鈕必須更改爲英語。該頁面必須相應採取行動。

如何使用一個按鈕來實現這一點?

+0

我覺得你的問題器具2個任務:首先在點擊按鈕後更改頁面語言,然後將按鈕標題設置爲其他語言已經在之前設置,但我需要進一步瞭解您嘗試解決的問題(如果需要,還包括代碼)。 –

回答

2

如果你只用2種語言的工作, 只是做一個按鈕翻轉每次點擊的語言和處理來自ViewBag或JavaScript這樣的按鈕上的文字:

public class LanguageController : Controller 
    { 
     public ActionResult ChangeLanguage() 
     { 
      if (Thread.CurrentThread.CurrentCulture.Name == "en-US") 
      { 
       Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR"); 
       ViewBag.CultBtn = "En"; 
      } 
      else 
      { 
       Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 
       ViewBag.CultBtn = "Fr"; 
      } 

      Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 

      HttpContext.Current.Session["culture"] = Thread.CurrentThread.CurrentCulture.Name; 

      return RedirectToAction("Index", "Home"); 
     } 
    }