2016-12-14 16 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"); 
     } 
    }