将十进制数格式化为百分比以在视图中显示?

14
在MVC Razor视图中,要将十进制字段显示为百分比,不带百分号。例如22.5
我理解这可以从模型中实现,大概是这样的:
    [AutoMapIgnore]
    [DisplayFormat(DataFormatString = "{0:F1}")]
    public virtual decimal OffPeakMarginPercent { get { return OffPeakMargin * 100; } }

但是目前它没有任何作用,当前显示为:

当前它被显示为3.00000或者2.50000

你能否提供一下指导。

非常感谢您的指导和帮助。

编辑:

如果我在视图中进行格式化,它将显示为3.0或者2.5

@row.OffPeakMarginPercent.ToString("0.0")

你试过 {0:n1} 吗? - V4Vendetta
3个回答

20

变更

[DisplayFormat(DataFormatString = "{0:F1}")]

[DisplayFormat(DataFormatString = "{0:P2}")]

从getter中移除*100。

此处所述,百分数的十进制格式为P而不是F


我已经尝试过这个,但它仍然显示为3.00000。你能看一下我的编辑并指导一下吗?谢谢。 - Toubi

1
在MVC 5中,如果您想要显示双精度值后的两个零,则可以更改索引视图。
之前的代码:
  @Html.DisplayFor(modelItem => item.PRSPrice)

代码后

 @Convert.ToDouble(item.PRSPrice.Value).ToString("0.00")

感谢您。

0

使用

[RegularExpression(@"^\d+(\.\d)?$", ErrorMessage = "Only one decimal point value allowed")]
[Range( 0.1,100)]
public virtual decimal OffPeakMarginPercent { get { return OffPeakMargin * 100; } }

感谢@Carlos Landeras,由于某些原因我无法使用正则表达式。此外,这是一个计算字段。你能否指导一下为什么模型的格式化不起作用?请查看我的编辑。非常感谢。 - Toubi
尝试使用这个:{0:000.0} - Carlos Landeras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接