knockout.js ASP.NET MVC和SQL Server中的十进制值

hpxqektj  于 2022-11-10  发布在  .NET
关注(0)|答案(1)|浏览(100)

我在编写ASP.NET MVC应用程序时遇到了一个小问题。我有一个绑定到数据库表的NPoco和一个被定义为decimal(9,2)的Price条目。下面是我使用的模型条目:

[Display(Name = "Price")]
[Required]
[DisplayFormat(DataFormatString = "{0:0,##}", ApplyFormatInEditMode = true)]
public decimal Price { get; set; }

接下来,我有一个knockout js模型,它绑定了所有的参数,并且运行良好。所有其他字段都被正确地获取和绑定。出于对价格的关注,我有这段html代码:

<input type="text" required data-bind="value: Price" class="form-control input-sm" id="priceID"/>

现在如果我用逗号插入一个值,一切都很正常,并且该值被正确地插入到数据库中(例如15,20),但是如果我使用点,则一个0.00值被插入到数据库中。有趣的是,当我重新加载对象以编辑它时,price的值被设置,并在html页面中使用点写入。
所以我的问题是:是否有一种方法可以接受两种格式(即点和逗号)?

iovurdzv

iovurdzv1#

我认为这是不可能的,尽管您可以使用<html lang="en-US" >强制一个语言环境和/或相应地处理输入。
每个用户的体验会因其计算机的区域设置而不同,强制分隔符为逗号可能不明智,反之亦然。但您可以替换或禁用上述字符的输入。
也许最优雅的方法是在服务器端处理所有事情,在不同的语言环境之间进行转换。

相关问题