我们系统中的大多数值都存储为小数-99%的时间使用整数,但是有时数字可能输入到小数点后2位。
因此,除非所有数字都显示为小数,否则所有数字都必须显示为整数,在这种情况下,根据数字,该数字应显示为1或2个小数位。
很明显,这可以通过使用
来实现 [DisplayFormat(DataFormatString = "{0:#,0.##}", ApplyFormatInEditMode = true)]
在每个字段上添加.ToString("#,0.##")
,但这非常耗时,尤其是在较大的类上,更不用说使代码难以阅读了。
由于这适用于所有小数-似乎只需覆盖默认格式并在整个系统范围内应用都容易得多。
有没有办法做到这一点?
答案 0 :(得分:1)
您可以定义一个默认的显示模板,该模板将在您使用.DisplayFor(...)
时拾取。对于decimal
属性,您需要创建以下文件:Views/Shared/DisplayTemplates/decimal.cshtml
该文件需要包含一个模型定义,就像常规视图一样,然后包含您需要呈现的任何内容:
@model decimal
@{
<span>@Model.ToString("#,0.##")</span>
}
.EditorFor(...)
与Views/Shared/EditorTemplates/decimal.cshtml
相同。