如有必要,仅显示基于小数点语言的逗号分隔符



我有一个基于全球化的项目集,使用葡萄牙语"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

因此,尽管"."和","分别用于表示区域设置的小数分隔符和千位分隔符。

最新更新