取决于浏览器语言,我收到了类似
的字符串123.22
或
123,22
所以有时我在这里面临例外
Convert.ToDecimal(item.UnitPrice);
我想创建一些表达式,因此转换应该基于当前的文化来完成。有可能吗?
答案 0 :(得分:1)
您没有告诉我们您的CultureInfo
是什么,但无论如何......
我们假设您的NumberFormatInfo.NumberDecimalSeparator
为,
而不是.
您的字符串123,22
效果很好;
string s = "123,23";
decimal d = Convert.ToDecimal(s, CultureInfo.CurrentCulture); //123,23
如果您的字符串为123.22
,那么您可以使用String.Replace
方法替换,
代替.
;
string s = "123.23";
if(s.Contains('.'))
s = s.Replace('.', ',');
decimal d = Convert.ToDecimal(s, CultureInfo.CurrentCulture); //123,23
答案 1 :(得分:0)
Convert.ToDecimal()
已使用CultureInfo.CurrentCulture
,但未将其设置为与浏览器相同的值。
您可以尝试在web.config
文件中指定从浏览器继承当前文化:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx
通常更好的方向是确保浏览器提交一致的值,而不是取决于浏览器语言。