C# 带可为空的十进制更改格式的razor中的DisplayFor
我的模型上有一个属性,如:C# 带可为空的十进制更改格式的razor中的DisplayFor,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我的模型上有一个属性,如: [DisplayFormat(DataFormatString = "{0:P0}")] public decimal ? Rate { get; set; } 在我看来,我有: <span class="large bold">- @Html.DisplayFor(x => x.Rate)</span> -@Html.DisplayFor(x=>x.Rate) 问题是:我需要显示的数字是28.71(十进制?) 如果
[DisplayFormat(DataFormatString = "{0:P0}")]
public decimal ? Rate {
get;
set;
}
在我看来,我有:
<span class="large bold">- @Html.DisplayFor(x => x.Rate)</span>
-@Html.DisplayFor(x=>x.Rate)
问题是:我需要显示的数字是28.71
(十进制?)
如果DisplayFor
带有x=>x.Rate
则视图显示2.871
,但如果DisplayFor
带有x=>x.Rate.Value
则视图显示正确的编号28.71
这里发生了什么事
DataFormatString = "{0:C0}"
这应该可以完成任务。我认为P0用于百分比。来自:
百分比(“p”)格式说明符将数字乘以100,然后
将其转换为表示百分比的字符串。精度
说明符指示所需的小数位数
{0:P0}
格式将显示您的十进制数(28.71)为28.71*100=2871%
(假设您使用的是en-US文化)
如果您只想将百分号添加到数字并显示它,请使用以下命令:
[DisplayFormat(DataFormatString = "{0} %")]
但我想用它作为百分比是的。。。但这并不能回答我的问题。。数字
28.71
与2871
不同,并且Rate
与Rate.Value
之间的差异给出不同的结果没有任何意义,这是有意义的。DisplayFormat
属性仅适用于Rate
属性。当您使用Rate.Value
时,DisplayFormat
不再工作,这就是您得到28.71的原因。我已经解释了为什么会得到2871
(28.71*100=2871)。