我有一个基于全球化的项目设置为葡萄牙语"pt-PT“,所以十进制数是用逗号",”分隔的。
如果可能的话,我不希望在属性的格式中设置逗号。
我现在拥有的代码(Model):
[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”。
发布于 2016-01-20 20:41:55
您不需要也不应该在模型中硬编码该格式。我不确定为什么不在web.config中简单地使用下面这一行:
<globalization culture="pt-PT" uiCulture="pt-PT" />如果问题是两位小数,那么这就是MVC中小数的默认编辑器的工作方式。一个简单的解决方案是使用TextBoxFor而不是EditorFor (因为您实际上不想使用十进制编辑器的功能)。
发布于 2016-01-20 20:48:58
如果您的区域性使用小数逗号,则数字格式将用点替换逗号。
来自https://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx
确定小数分隔符在结果字符串中的位置。
更多信息:".“自定义规范。
0.45678 ("0.00",简体中文) -> 0.46
0.45678 ("0.00",fr-FR) -> 0,46
因此,尽管“.”和',‘分别用于表示区域设置的小数分隔符和千位分隔符。
https://stackoverflow.com/questions/34900311
复制相似问题