Проблема культуры с ASP.NET, используемой в корзине - PullRequest
1 голос
/ 04 февраля 2010

Я разрабатываю корзину для покупок, и часть функций заключается в выборе вашей валюты.

У меня есть выпадающий список, и когда выбранный индекс изменяется, я написал некоторый код, чтобы найти код культуры (например, 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?

Ответы [ 2 ]

1 голос
/ 04 февраля 2010

Я понял, потому что это было из записи в базе данных, которая по какой-то причине была типом char (10), я забыл обрезать текст. Это привело к тому, что Framework не нашла культуру и вернулась к en-US по умолчанию, так как не смогла найти en-GB.

1 голос
/ 04 февраля 2010

Потому что вы проверяете, если (Session ["Culture"]! = Null), который ограничивает вас, чтобы установить культуру во второй раз, так как Session ["Culture"] не будет нулевым.

...