我有一个看起来像这样的Money类(简化):
public class Money
{
private readonly decimal _amount;
public decimal Amount
{
get { return _amount; }
}
public Money(decimal amount)
{
_amount = amount;
}
public override string ToString()
{
return _amount.ToString("c2");
}
public static implicit operator Money(decimal value)
{
return new Money(value);
}
}
在我的Razor视图中,我想渲染这样的金钱价值:
<p>This is my money value:
@Model.MyNullableMoneyValue
</p>
当我运行View时,而不是使用Money结构的ToString()方法,它应该导致类似“$ 10.00”的东西,它渲染就像它在十进制数量上调用ToString(),即像“10.0000”。
添加ToString()自己解决了这个问题:
<p>This is my money value:
@Model.MyNullableMoneyValue.ToString()
</p>
为什么呢?发生了什么事?