【问题标题】:Can't set display format to 2 decimal places when using mvc6 grid使用 mvc6 网格时无法将显示格式设置为 2 位小数
【发布时间】:2019-03-23 04:56:13
【问题描述】:

我需要在我的 .net core asp mvc 项目中显示一些货币价值的平均总和。

我正在使用mvc 6 grid显示数据,我尝试了以下解决方案:

[DisplayFormat(DataFormatString = "{0:C}")]
public double? AverageCost { get; set; }

[DisplayFormat(DataFormatString = "{0:#.####}")]
public double? AverageCost { get; set; }

[RegularExpression(@"^\d+\.\d{0,2}$")]
public double? AverageCost { get; set; }

但我的值仍然显示有几个小数位:

我错过了什么吗?

我知道我可以使用 mvc 6 网格来格式化列,但是在 ViewModel 中没有办法做到这一点吗?

请注意,这不是与建议问题的重复。如果您真的阅读了这些问题,您会看到。

【问题讨论】:

  • [DisplayFormat(DataFormatString = "{0:C2}")] 2 位数字 docs.microsoft.com/en-us/dotnet/standard/base-types/…
  • "货币价值总和" & "double?AverageCost" = 坏主意。
  • @Fildor 是的,我知道,但我不控制数据库,货币值在其中存储为 double?s..
  • [DisplayFormat] 仅在您使用 DisplayFor()(或 EditorFor())时才会受到尊重
  • @Fildor 谢谢哥们,希望它能重新打开,这样我就可以收获一些甜蜜的 SO 点

标签: c# format asp.net-core-mvc currency mvcgrid


【解决方案1】:

我可以通过使用 Formatted 方法并在视图本身中传递值 {0:N} 来做到这一点:

columns.Add(model => model.AverageCost).Titled("AverageCost").Formatted("{0:N}");

我通过从here 获取格式字符串并找到使用Formatted 方法here 找到了答案

这对我来说是完美的,因为它将值显示为货币,但不会像 {0:C} 那样显示货币符号

【讨论】:

    【解决方案2】:

    在您的第一行中,您错过了“C”之后的小数点。应该是[DisplayFormat(DataFormatString = "{0:C2}")]

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多