格式化cshtml中的金额值

时间:2018-02-16 04:12:06

标签: asp.net-mvc

如何在我的视图中将AmountFc媒体资源格式化为#,##0.00

模型中的属性是可以为空的decimal

public decimal? AmountFc { get; set; }

在视图中我使用

<td height="15" style="text-align:center">@Model.Transcation.AmountFc</td >

使用@Model.Transcation.AmountFc.ToString("#,##0.00")会出现以下错误。

  

方法“ToString”没有重载需要1个参数

1 个答案:

答案 0 :(得分:1)

使用.ToString("#,##0.###")时出现的错误是因为该属性是可以为空的值类型。您需要将值转换为十进制,例如使用

@Model.Transcation.AmountFc.GetValueOrDefault().ToString("#,##0.00")

但是,这意味着如果值为null,则会显示0.00,这会产生误导。您可以有条件地检查null,例如

@if(Model.Transcation.AmountFc.HasValue)
{
    <td>@Model.Transcation.AmountFc.Value.ToString("#,##0.00")</td>
}
else
{
    <td></td>
}

然而,更好的解决方案是将DisplayFormatAttribute应用于您的财产

[DisplayFormat(DataFormatString = "{0:#,##0.00}")]
public decimal? AmountFc { get; set; }

并在视图中使用

<td>@Html.DisplayFor(m => m.Transcation.AmountFc)</td>

将显示格式化的值(如果值为null,则不显示任何内容)

此外,DisplayFormatAttribute具有NullDisplayText属性,用于确定值为null时显示的内容(默认值为空string),例如< / p>

[DisplayFormat(DataFormatString = "{0:#,##0.00}", NullDisplayText = "Not applicable")]

会生成

<td>Not applicable</td>

如果值为null