我想在我的网站上显示多种语言和UI文化。我启用了IIS 7标志,它自动从浏览器中获取文化:
<globalization
enableClientBasedCulture="true"
culture="en-GB"
uiCulture="auto:en"/>
这非常有效,因为加载了正确的资源文件,并显示了正确的文化(GB为0.00; DE为0,00)。
然而,这有一个意外的干扰我的外部服务的问题,例如这里是与PayPal接口的代码。
var paymentDetails = new PaymentDetailsType
{
ItemTotal = new BasicAmountType
{
currencyID = currencyCode,
Value = basket.SubTotal.ToString("0.00")
},
...
}
此代码基本上创建一个格式为'50.25'
的字符串,但是当选择具有逗号作为小数点的文化时(例如DE - 德语),PayPal始终需要点小数点{ {1}}生成ToString("0.00")
,因此我的代码失败了。
纠正此问题的最佳方法是什么?我仍然希望将文化设置为用户的文化,但是我想设置我的代码的某些部分以使用我自己的文化。
我知道我可以为'50,25'
方法提供特定的文化,但这似乎非常 hackish 。任何更专业的清洁方法?
答案 0 :(得分:5)
Value = basket.SubTotal.ToString("0.00", CultureInfo.InvariantCulture)
这是ToString()重载的链接,它接受第二个System.IFormatProvider参数: http://msdn.microsoft.com/en-us/library/d8ztz0sa.aspx