最简单的答案是您需要创建一个然后链接到的控制器.
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");
}
}
然后在你看来:
您可以考虑将会话或类似的用户数据存储起来.
编辑:
例如,您可以在global.asax中使用Application_BeginRequest事件.
protected void Application_BeginRequest(Object sender,EventArgs e)
{
var name = HttpContext.Current.Session["culture"] as string;
if (string.IsNullOrEmpty(name))
{
return;
}
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(name);
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
}
编辑:
将Cookie保存在SetLanguage操作中:
var cookie = new HttpCookie("_culture",name);
cookie.Expires = DateTime.Today.AddYears(1);
Response.SetCookie(cookie);
在Application_BeginRequest中获取cookie:
var cookie = HttpContext.Current.Request.Cookies["_culture"];
var name = cookie != null ? cookie.Value : null;