ASP.NET MVC中的文化问题3

Jam*_*mes 1 asp.net-mvc culture localization asp.net-mvc-3

我想在我的网站上显示多种语言和UI文化.我启用了IIS 7标志,它自动从浏览器中获取文化,如下所示:

<globalization 
    enableClientBasedCulture="true"
    culture="en-GB"
    uiCulture="auto:en"/>
Run Code Online (Sandbox Code Playgroud)

这非常有效,因为加载了正确的Resources文件,并显示正确的文化(GB为0.00; DE为0,00).

然而,这有一个意外的干扰我的外部服务的问题,例如这里是与PayPal接口的代码.

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

这段代码基本上创建了一个像这样格式化的字符串'50.25',但是当PayPal总是需要点小数点时,当选择具有逗号作为小数点(例如DE - 德语)的文化时,ToString("0.00")生成'50,25'因此我的代码失败.

什么是纠正这个的最佳方法?我仍然希望将文化设置为用户的文化,但是我想设置我的代码的某些部分以使用我自己的文化.

我知道我可以用特定的文化来养活这种ToString()方法,但这看起来非常苛刻.更专业的清洁方法?

Chr*_*son 5

看看InvariantCulture.

Value = basket.SubTotal.ToString("0.00", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

这是ToString()重载的链接,它带有第二个System.IFormatProvider参数:http: //msdn.microsoft.com/en-us/library/d8ztz0sa.aspx