【问题标题】:MVC won't accept decimals with comma(,) but displays them with commas by defaultMVC 不接受带逗号(,) 的小数,但默认情况下用逗号显示它们
【发布时间】:2019-09-24 11:13:31
【问题描述】:

让我先说我对 mvc 的工作原理几乎是零了解,而且我的大部分代码都是由 Visual Studio 生成的。我什至不知道去哪里解决这个问题。

所以,我创建了一个包含“价格”(decimal(5,2)) 作为字段的数据库。查看数据库时,价格字段以 0,00 格式显示。 db 有一条记录,价格值为 5,25。然后我让 vis studio 基于这个数据库生成一个模型(然后是带有视图的控制器)。 在大多数情况下它都有效;我可以通过视图插入新记录并将其存储在数据库中。

问题在于小数。当我转到默认的“创建”视图时,输入价格的文本字段以默认值 0,00 开始。该文本字段随即显示红色警告文本“字段价格必须是数字”。如果我输入一个没有小数的数字,则插入记录没有问题。如果我输入带逗号的数字,我会收到上述警告。如果我输入格式为 0.00(例如 1.25)的数字,我不会收到警告,并且可以提交,但输入的数字将为 0。

默认的“编辑”视图中存在类似问题。文本字段都自动填充来自所选记录(要编辑的记录)的数据,但价格字段以 0,00 格式显示,我收到与上述相同的警告。 在默认的“索引”视图中显示记录时,价格为 5,25 的记录以 0,00 格式正确显示。

我对这两种格式的依恋为零,我只想要一致性,以及输入带小数的数字的能力。 我的一些代码:

编辑/创建视图中的输入(两者相同):

<div class="form-group">
    <h4>
        <strong>Price</strong>
    </h4>
    <input asp-for="ItemPrice" class="form-control" />
    <span asp-validation-for="ItemPrice" class="text-danger"></span>
</div>

模型中价格字段的声明:

public decimal ItemPrice { get; set; }

【问题讨论】:

  • 可能您的前端代码 (jquery) 验证仅允许 .(点)作为有效的小数分隔符,并且您的 ASP 网络服务器文化设置为使用 ,(逗号)作为小数的文化分隔器。在这里您将能够找到更多信息stackoverflow.com/questions/48066208/…
  • 感谢您的帮助,链接页面上的 cmets 有点超出我的想象。我尝试更改 jquery.validate.js,但它似乎没有做任何事情。
  • 如果您不关心应用文化,请尝试将 ASP.NET 应用程序的文化目标更改为具有点表示的文化目标(例如 en-US)
  • 如何(在什么文件中,如果是文件)我可以这样做吗?

标签: c# asp.net-core-mvc razor-pages


【解决方案1】:

我有一个项目,价格问题也发生在我身上。

问题是您要显示价格,例如 1,234.56 还是 1234,56。

如果你想要第一种格式的节目,我会建议一个 jQuery http://pluginprice-format.github.io/Jquery-Price-Format/

如果您想要显示第二种格式,您可以创建一个方法并将 JavaScript 中的 ,​​(comma) 替换为 .(dot)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2011-01-26
    • 2012-05-03
    相关资源
    最近更新 更多