具有可为空的十进制更改格式的剃刀中的DisplayFor

时间:2015-06-19 16:00:49

标签: c# asp.net-mvc asp.net-mvc-4 razor

我的模型上有一个属性,如:

[DisplayFormat(DataFormatString = "{0:P0}")]
public decimal ? Rate {
    get;
    set;
}

在我的剃刀视图中,我有:

<span class="large bold">- @Html.DisplayFor(x => x.Rate)</span>

问题是:我需要显示的数字是28.71(十进制?) 如果DisplayForx => x.Rate一致,则视图会显示2.871,但如果DisplayForx => x.Rate.Value一致,则视图会显示正确的数字28.71

这里发生了什么?

2 个答案:

答案 0 :(得分:2)

来自MSDN

  

百分比(“P”)格式说明符将数字乘以100和   将其转换为表示百分比的字符串。精度   说明符表示所需的小数位数。

{0:P0}格式会将您的十进制数字(28.71)显示为28.71 * 100 = 2,871 %(假设您使用的是en-US文化)。

如果您只想将百分号添加到数字并显示,请使用:

[DisplayFormat(DataFormatString = "{0} %")]

答案 1 :(得分:0)

DataFormatString = "{0:C0}"

那应该做的工作。我认为P0用于百分比。