首页 > 解决方案 > MVC 不接受带逗号(,) 的小数,但默认情况下用逗号显示它们

问题描述

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

因此,我创建了一个包含“价格”(十进制(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; }

标签: c#asp.net-core-mvcrazor-pages

解决方案


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

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

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

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


推荐阅读