我试图添加一个价格列到我的ASP.NET Crud,它的作品。唯一的问题,我有是,它是采取错误的输入。我是一个初学者,所以我必须忽略的东西,但无论如何,我插入一个值,如15.50,它成为1.550
enter image description hereenter image description here的数据库
这里有一些代码片段,我不知道我在这里搞砸了什么。namespace CRUDNet.
{
[Table("Produtos")]
public class Produto
{
[Column("ID")]
[Display(Name = "ID")]
public int ID { get; set; }
[Column("Nome")]
[Display(Name = "Nome")]
public string Nome { get; set; }
[Column("Valor")]
[Display(Name = "Valor")]
[DisplayFormat(DataFormatString = "{0:C}")]
public decimal Valor { get; set; }
}
}
字符串
我希望当我插入一个值,如15.50,我得到15.50,而不是1.550
3条答案
按热度按时间fjaof16o1#
看起来你的本地小数和分组分隔符不是你认为的那样,分组分隔符是一个句号(
.
),并且被忽略,因为它与解析数字无关。字符串
我当前的文化是en-gb,它使用句点作为小数点分隔符,逗号作为分组分隔符。
yqyhoc1h2#
您的应用程序中15.50转换为1.550的问题似乎与Produto类中Valor字段的格式有关,也可能与应用程序的区域性设置如何解释十进制数有关。
在代码中,[DisplayFormat(DataFormat String =“{0:C}”)]设置为将Valor格式化为货币,这可能会因应用程序的区域性设置而异。如果应用程序使用的区域性中逗号是小数点分隔符,则它可能会将15.50显示为1.550。
1-检查区域性:1-1设置所需的区域性:您可以在应用程序的启动代码或控制器操作中执行此操作。
字符串
2-更改格式字符串:尝试将DataString字符串更改为类似“{0:0.00}”的内容以获得更一致的格式。3-查看如何处理输入:确保在代码中将输入15.50正确解析为小数。
4-小提示:尝试暂时删除[DisplayFormat]属性以查看Valor的原始值,帮助您确定问题是与值的存储或显示有关。
pexxcrt23#
格式(F):{0:D}以十进制格式显示整数值。您可以指定位数。(尽管类型称为“decimal”,但数字的格式为整数。)
对于2个位置,请使用它,如DataString = {0:n2}