私は次のような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>
ビューを実行すると、Money構造体のToString()メソッドを使用すると、「$ 10.00」のようになりますが、小数でToString()を呼び出しているかのように、つまり「10.0000」のようにレンダリングされます。
ToString()を自分で追加すると、問題が修正されます。
<p>This is my money value:
@Model.MyNullableMoneyValue.ToString()
</p>
なんで?どうしたの?