【问题标题】:Decimal value in ASP.NET MVC and SQL ServerASP.NET MVC 和 SQL Server 中的十进制值
【发布时间】:2019-10-23 01:35:23
【问题描述】:

我正在编写的 ASP.NET MVC 应用程序中的十进制值有一点问题。我有一个 NPoco 绑定到一个数据库表和一个定义为十进制(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 值。有趣的是,当我重新加载对象以对其进行编辑时,价格的值被设置并用 html 页面内的点写入。

所以我的问题是:有没有一种方法可以同时接受这两种格式(用点和逗号表示)?

【问题讨论】:

标签: sql-server asp.net-mvc knockout.js


【解决方案1】:

我认为这是不可能的,尽管您可以使用 &lt;html lang="en-US" &gt; 强制使用一种语言环境和/或相应地处理输入。

每个用户的体验会因他们的计算机区域设置而异,强制分隔符为逗号可能是不明智的,反之亦然。但是您可以替换或禁用所述字符的输入。

可能最优雅的方式是在服务器端处理所有内容,在语言环境之间进行转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多