Как получить текущий CultureInfo в классе оболочки? - PullRequest
0 голосов
/ 24 мая 2011

У меня есть страница 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 ]

2 голосов
/ 24 мая 2011

Лучшее, что можно сделать при работе с информацией о культуре и локализации, - установить ее в том месте, где она принадлежит: в текущем потоке. Попробуйте это:

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

Таким образом, вы всегда можете узнать текущую культуру из потока, в котором выполняется ваш запрос. Вы можете также рассмотреть возможность настройки CurrentUICulture, а также некоторые механизмы локализации используют это значение.

0 голосов
/ 24 мая 2011

Чтобы следовать текущему подходу, если вы просто хотите получить доступ к переменной сеанса в классе, который не наследуется от System.Web.UI.Page, вы можете просто получить к нему доступ следующим образом.

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

I 'Я делаю предположение, что вы добавили отдельный класс.

Если у вас есть веб-проект, вы можете попытаться интегрировать его в свой Global.asax, и ваш класс-оболочка также обернет свойства Global.asax.

...