如有必要,仅显示基于小数点语言的逗号分隔符
本文关键字:语言 小数点 分隔符 显示 | 更新日期: 2023-09-27 18:31:05
我有一个基于全球化的项目集,使用葡萄牙语"pt-PT",所以十进制数用逗号","分隔。
如果可能的话,我不希望以属性的格式设置逗号。
我现在拥有的代码(模型):
[DisplayFormat(DataFormatString = "{0:#,##}", ApplyFormatInEditMode = true)]
public decimal SizeOpenedWidth { get; set; }
观点:
@Html.EditorFor(model => model.SizeOpenedWidth, new { htmlAttributes = new { @class = "form-control" } })
问题是这个解决方案在模型中有逗号","编码,它为十进制"11,01"表示值"11"。
编辑1:
我能够找到问题:
{0:#,##} -> {0:#.##}
我用"."替换了",",它现在可以工作了,并且它假设全球化的葡萄牙语格式"11,01"。
是否可以用这种类型的字符串格式呈现"11,1"具有"11,10"?
编辑2:
解决方案 {0:#.##} 创建呈现",1"的问题",1"。
您不需要也不应该对模型中的格式进行硬编码。我不确定你为什么不在你的web.config中简单地使用以下行:
<globalization culture="pt-PT" uiCulture="pt-PT" />
如果问题是 2 位小数,那么这就是 MVC 中十进制的默认编辑器的工作方式。一个简单的解决方案是使用 TextBoxFor 而不是 EditorFor(因为您实际上不想使用十进制编辑器的功能)。
如果您的区域性使用十进制逗号,则数字格式会将逗号替换为点。
From https://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx
确定结果字符串中小数分隔符的位置。
详细信息:"."自定义说明符。
0.45678 ("0.00", en-US) -> 0.46
0.45678 ("0.00", fr-fr) -> 0,46
因此,尽管"."和","分别用于表示区域设置的小数分隔符和千位分隔符。