仅在必要时显示基于小数语言的逗号分隔符

时间:2016-01-20 12:37:58

标签: c# asp.net-mvc string-formatting

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

EDIT1:

我能够找到问题:

{0:#,##} -> {0:#.##}

我替换了","与"。"它现在正在工作,它采用全球化的葡萄牙语格式" 11,01"。

是否可以呈现" 11,1"已经" 11,10"使用这种字符串格式?

EDIT2:

解决方案{0:#。##}会产生问题",1"提出",1"。

2 个答案:

答案 0 :(得分:1)

您不需要也不应该对模型中的格式进行硬编码。我不确定为什么不在web.config中使用以下行:

<globalization culture="pt-PT" uiCulture="pt-PT" />

如果问题是2位小数,那么这就是MVC中小数的默认编辑器的工作方式。一个简单的解决方案是使用TextBoxFor而不是EditorFor(因为您实际上不想使用十进制编辑器的功能)。

答案 1 :(得分:0)

如果您的文化使用小数点逗号,则数字格式将用点替换逗号。

来自https://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx

  

确定结果字符串中小数点分隔符的位置。

     

更多信息:&#34;。&#34;自定义说明符。
  0.45678(&#34; 0.00&#34;,en-US) - &gt; 0.46
  0.45678(&#34; 0.00&#34;,fr-FR) - &gt; 0,46

所以虽然&#39;。&#39;和&#39;,&#39;用于表示区域设置&#39;小数分隔符和千位分隔符。