ASP.NET MVC中的文化问题3

时间:2011-12-29 12:20:57

标签: asp.net-mvc asp.net-mvc-3 localization culture

我想在我的网站上显示多种语言和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 。任何更专业的清洁方法?

1 个答案:

答案 0 :(得分:5)

查看InvariantCulture

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

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