Проблемы культуры в ASP.NET MVC 3 - PullRequest
1 голос
/ 29 декабря 2011

Я хочу отображать несколько языков и культур интерфейса на моем веб-сайте.Я включил флаг IIS 7, который автоматически выбирает культуру из браузера следующим образом:

<globalization 
    enableClientBasedCulture="true"
    culture="en-GB"
    uiCulture="auto:en"/>

Это отлично работает, поскольку загружаются правильные файлы ресурсов и отображается правильная культура (0,00 для ГБ;0,00 для DE).

Однако возникла неожиданная проблема с вмешательством в мои внешние службы, например, вот код для взаимодействия с PayPal.

var paymentDetails = new PaymentDetailsType
{
    ItemTotal = new BasicAmountType
    { 
        currencyID = currencyCode,
        Value = basket.SubTotal.ToString("0.00")
    },
    ...
}

Этот код в основномсоздает строку, отформатированную так: '50.25', однако, поскольку PayPal всегда требует десятичного разделителя, при выборе культуры с запятой в качестве десятичного разделителя (например, DE - немецкий), ToString("0.00") генерирует '50,25' и т. д.мой код не работает.

Какой лучший способ исправить это?Я по-прежнему хочу, чтобы культура была настроена на культуру пользователя, однако я хочу настроить определенные части своего кода на использование своей собственной культуры.

Я знаю, что в определенной культуре я могу использовать метод ToString(), ноэто выглядит очень хакерским .Есть еще профессиональные подходы?

1 Ответ

5 голосов
/ 29 декабря 2011

Взгляните на InvariantCulture .

Value = basket.SubTotal.ToString("0.00", CultureInfo.InvariantCulture)

Вот ссылка на перегрузку ToString (), которая принимает второй параметр System.IFormatProvider: http://msdn.microsoft.com/en-us/library/d8ztz0sa.aspx

...