【问题标题】:formatting a decimal as percentage to display in view?将小数格式化为百分比以显示在视图中?
【发布时间】:2013-10-25 12:22:15
【问题描述】:

在 MVC Razor 视图中,十进制字段需要显示为百分比BUT,不带百分号。例如22.5

我知道它可以来自模型,它会是这样的:

    [AutoMapIgnore]
    [DisplayFormat(DataFormatString = "{0:F1}")]
    public virtual decimal OffPeakMarginPercent { get { return OffPeakMargin * 100; } }

但根本没有做任何影响,目前显示为:

目前它显示为3.000002.50000

请指导一下。

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

编辑:

如果我在下面的视图中格式化,它显示为3.02.5

@row.OffPeakMarginPercent.ToString("0.0")

【问题讨论】:

  • 你试过了吗{0:n1}

标签: c# asp.net-mvc razor number-formatting


【解决方案1】:

改变

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

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

并从 getter 中删除 *100

正如here 所说的十进制百分比格式是P 而不是F

【讨论】:

  • 我已经尝试过了,但它仍然显示为 3.00000。你能看到我的编辑和指南吗?谢谢
【解决方案2】:

在 MVC 5 中,您可以更改索引视图,如果您只想在 double 值之后显示两个零

之前的代码

  @Html.DisplayFor(modelItem => item.PRSPrice)

代码之后

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

谢谢

【讨论】:

    【解决方案3】:

    使用

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

    【讨论】:

    • 感谢@Carlos Landeras,由于某种原因,我不能使用正则表达式。此外,它是一个计算字段。你能指导一下为什么格式化在 Model 中不起作用吗?请同时查看我的编辑。非常感谢。
    • 试试这个:{0:000.0}
    猜你喜欢
    • 2013-08-26
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2020-07-29
    • 1970-01-01
    相关资源
    最近更新 更多