如何在包装类中获取当前的文化信息
本文关键字:文化 信息 获取 包装类 | 更新日期: 2023-09-27 17:57:24
我有 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);
}
我在包装器类后面写了非页面,在这个类中,我需要从会话中获取这种文化。我怎样才能得到它?
使用文化和本地化信息时,最好的办法是将其设置为它们所属的位置:当前线程上。试试这个:
System.Threading.Thread.CurrentThread.CurrentCulture = yourCulture;
这样,您始终可以从运行请求的线程中获取当前区域性。您还可以考虑设置 CurrentUICulture 以及使用该值的某些本地化机制。
如果您只想访问不继承自 System.Web.UI.Page 的类中的会话变量,您可以简单地像这样访问它,以遵循您当前的方法。
return (CultureInfo)HttpContext.Current.Session["MyCulture"];
我假设您添加了一个单独的类。
如果你有一个 Web 项目,你可以尝试将其集成到你的 Global.asax 中,并让你的包装类也包装 Global.asax 属性。