我有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);
}
我写了非页面封装类,在这个类中我需要从会话中获取此文化。我怎么能得到它?
答案 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属性。