无法将类型'decimal'隐式转换为'string'

时间:2012-04-14 20:07:51

标签: c# asp.net-mvc asp.net-mvc-3

我在我正在创建的购物车中有这个代码但是我收到了标题中显示的错误。错误显示在这一行:

4 个答案:

答案 0 :(得分:3)

只需调用ToString即可获得十进制值的字符串表示形式:

order.Total = orderTotal.ToString("G");

虽然我不明白为什么你会将会员Total存储为string而不会存储为decimal

答案 1 :(得分:0)

听起来Order类的Total属性是字符串。检查Order的类定义。如果是这种情况,我建议将Total数据类型更改为小数,因为将货币值表示为字符串是没有意义的。 decimal更有意义。

答案 2 :(得分:0)

您的Order课程如何?名为Total的属性的类型是什么?看起来它是一个字符串类型。在这里,您尝试将十进制值设置为字符串类型即是您收到该错误。所以你需要在将十进制转换为字符串变量之前将其转换为字符串。使用toString()方法。

order.Total = orderTotal.ToString();

正如都铎已经提到的,最好使用Total作为十进制属性,因为它很容易进行所有数学运算。每次要进行算术运算并再次将其转换回字符串时,您不需要将其转换为十进制格式

答案 3 :(得分:0)

Order.Total的类型更改为十进制。数据类型Decimal不会自动转换为字符串(反之亦然),这就是您收到错误的原因,此外,对Order.Total的任何后续调用都将与字符串相关,因此您将无法使用像Order.Total +=

这样的运算符

另请注意,任何绑定方便(如DataTable的'format'属性)都将被忽略,因为底层架构不会调用string.ToString(format)。