Я разрабатываю корзину для покупок, и часть функций заключается в выборе вашей валюты.
У меня есть выпадающий список, и когда выбранный индекс изменяется, я написал некоторый код, чтобы найти код культуры (например, en-GB или en-US), а затем изменил культуру текущего сеанса. Кроме того, используя обменный курс, он меняет цену ...
В настоящее время я использую en-GB в качестве культуры по умолчанию. Когда кто-то выбирает ан-американскую культуру из выпадающего списка, все работает нормально. Изменения валюты (все метки валюты установлены с помощью ToString ("C")) и изменения обменного курса.
Когда я снова использую раскрывающийся список для выбора en-GB, обменный курс меняется (поэтому я знаю, что код работает), и после отладки я вижу, что сеанс культуры изменился с en-US на ГБ, но валюта по-прежнему отображается как $, а не как £.
Я действительно не могу понять, почему это происходит. Код очень прост, я переопределяю событие page_Load для каждой страницы, чтобы отображать правильную валюту в зависимости от культуры:
protected override void OnLoad(EventArgs e)
{
if (Session["Culture"] != null)
{
string culture = Session["Culture"].ToString();
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["Culture"].ToString());
}
base.OnLoad(e);
}
Почему это не меняет валюту обратно на £, когда я меняю сессионную культуру с en-US на en-GB?