【发布时间】: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