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

时间:2011-05-24 07:12:52

标签: c# asp.net culture

我有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);  
}

我写了非页面封装类,在这个类中我需要从会话中获取此文化。我怎么能得到它?

2 个答案:

答案 0 :(得分:2)

使用Culture和本地化信息时,最好的办法是将其设置为它们所属的位置:在当前线程上。试试这个:

System.Threading.Thread.CurrentThread.CurrentCulture = yourCulture;

这样,您始终可以从运行请求的线程中获取当前文化。您也可以考虑设置CurrentUICulture以及一些使用该值的本地化机制。

答案 1 :(得分:0)

如果您只想访问不从System.Web.UI.Page继承的类中的会话变量,则可以按照当前的方法进行操作。您可以像这样访问它。

return (CultureInfo)HttpContext.Current.Session["MyCulture"];

我假设您添加了一个单独的类。

如果您有一个Web项目,可以尝试将其集成到Global.asax中,并让您的包装类也包装Global.asax属性。