如何在包装类中获取当前的文化信息

本文关键字:文化 信息 获取 包装类 | 更新日期: 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 属性。