为什么Razor视图没有在我的struct上正确调用ToString()

时间:2012-12-12 07:17:24

标签: razor

我有一个看起来像这样的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>

为什么呢?发生了什么事?

0 个答案:

没有答案