C# Webservice忽略应用程序的cultureinfo设置
我有一个Web应用程序,其中包含一些发布到webservice方法的表单。json post是通过jquery$.ajax方法完成的。虽然my cultureinfo设置为nl nl,但我的webmethod在发布表单的值时会抛出错误“10,00不是十进制的有效值”。同样的情况也适用于带有荷兰符号的日期时间 .net序列化程序似乎忽略了全局区域性设置。当我将“10,00”更改为“10.00”时,webmethod将接受帖子C# Webservice忽略应用程序的cultureinfo设置,c#,jquery,asp.net,web-services,C#,Jquery,Asp.net,Web Services,我有一个Web应用程序,其中包含一些发布到webservice方法的表单。json post是通过jquery$.ajax方法完成的。虽然my cultureinfo设置为nl nl,但我的webmethod在发布表单的值时会抛出错误“10,00不是十进制的有效值”。同样的情况也适用于带有荷兰符号的日期时间 .net序列化程序似乎忽略了全局区域性设置。当我将“10,00”更改为“10.00”时,webmethod将接受帖子 我们已经为这个问题挣扎了一段时间,在SO和Google上找不到任何有用的
我们已经为这个问题挣扎了一段时间,在SO和Google上找不到任何有用的东西。所以在这件事上任何帮助都是非常好的 基本上,这是由于代码的和平:
// No exponent, may or may not have a decimal (if it doesn't it couldn't be parsed into Int32/64)
decimal dec;
if (decimal.TryParse(input, NumberStyles.Number, CultureInfo.InvariantCulture, out dec)) {
// NumberStyles.Number: AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign,
// AllowTrailingSign, AllowDecimalPoint, AllowThousands
return dec;
}
参考:
因此,唯一的选择是用替换。向英国霸权投降 我认为这不是“屈服于英国霸权”,而是“在任何地方都使用不变的文化,除了边缘”。日期应始终转换为GMT进行处理和存储,数字和货币应始终采用区域性不变的格式。文化特异性在我看来更像是一个UI/表示问题。@johnblesoe那么优势在哪里呢?TryParse“10,00”当您的文化是荷兰语(在本例中)时,应将10.00解析为双精度。边缘是用户界面。您正在处理应用程序内部通信($.ajax到web服务),根据我的经验,应该使用不变的文化。