如何在包装类中获取当前的CultureInfo?

问题描述

| 我有Main.Master页面,该页面带有用于设置CultureInfo并将其存储在会话中的按钮:
protected void RU_Click(object sender,ImageClickEventArgs e)
{
    Session[\"MyCulture\"] = CultureInfo.CreateSpecificCulture(\"ru-Ru\");
    Server.Transfer(Request.Url.LocalPath);     
}

protected void USA_Click(object sender,ImageClickEventArgs e)
{
    Session[\"MyCulture\"] = CultureInfo.CreateSpecificCulture(\"en-AU\");
    Server.Transfer(Request.Url.LocalPath);  
}
我在包装器类后面写了一个页面在这个类中,我需要从会话中获取此Culture。我怎么才能得到它?     

解决方法

如果您只想访问不继承自System.Web.UI.Page的类中的会话变量,则要遵循当前的方法,您可以像这样简单地进行访问。
return (CultureInfo)HttpContext.Current.Session[\"MyCulture\"];
我假设您添加了单独的类。 如果您有一个Web项目,则可以尝试将其集成到Global.asax中,并让包装器类也包装Global.asax属性。     ,使用文化和本地化信息时,最好的做法是将其设置为它们所属的位置:在当前线程上。尝试这个:
System.Threading.Thread.CurrentThread.CurrentCulture = yourCulture;
这样,您始终可以从运行请求的线程中获取当前区域性。您也可以考虑设置CurrentUICulture以及某些本地化机制使用该值。