C# 小数的默认格式

C# 小数的默认格式,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我们系统中的大多数值存储为小数-99%的时间使用整数,但偶尔数字可能输入到小数点后2位 因此,要求所有数字都显示为整数,除非存在小数点,在这种情况下,小数点显示为1或2位,具体取决于数字 显然,这可以通过使用 [DisplayFormat(DataFormatString=“{0:#,0.##}”,ApplyFormatInEditMode=true)] 在每个字段上添加.ToString(“#,0.###”),但这样做非常耗时,尤其是在较大的类上,更不用说让代码很难阅读了 由于这适用于所有的小

我们系统中的大多数值存储为小数-99%的时间使用整数,但偶尔数字可能输入到小数点后2位

因此,要求所有数字都显示为整数,除非存在小数点,在这种情况下,小数点显示为1或2位,具体取决于数字

显然,这可以通过使用

[DisplayFormat(DataFormatString=“{0:#,0.##}”,ApplyFormatInEditMode=true)]

在每个字段上添加
.ToString(“#,0.###”)
,但这样做非常耗时,尤其是在较大的类上,更不用说让代码很难阅读了

由于这适用于所有的小数-似乎只需覆盖默认格式并在系统范围内应用此格式就更容易了


有没有办法做到这一点?

您可以定义一个默认的显示模板,每当您使用
.DisplayFor(…)
时,该模板将被选中。对于
decimal
属性,需要创建以下文件:
Views/Shared/DisplayTemplates/decimal.cshtml

文件需要包含模型定义,就像常规视图一样,然后包含渲染它所需的任何内容:

@model decimal

@{
    <span>@Model.ToString("#,0.##")</span>
}
@model decimal
@{
@Model.ToString(“#,0.##”)
}
这同样适用于
.EditorFor(…)
视图/Shared/EditorTemplates/decimal.cshtml