c# - 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; }
解决方案
我有一个项目,价格问题也发生在我身上。
问题是您要显示价格,例如 1,234.56 还是 1234,56。
如果你想要第一种格式的节目,我会建议一个 jQuery http://plugin price-format.github.io/Jquery-Price-Format/
如果您想要显示第二种格式,您可以创建一个方法并将 JavaScript 中的 ,(comma) 替换为 .(dot)。
推荐阅读
- tensorflow - 如何安装 TensorFlow 2 和 object_detection 模块?
- python - 如何在 Twitter 数据中找到提及?
- spring - 在 Spring 存储库中使用 Querydsl 和 JPAQuery 进行大型或复杂查询?
- google-cloud-firestore - 如何为这样的任务正确构建模型?
- javascript - livewire wire:submit.prevent 仅在通过提交按钮提交表单时有效
- javascript - 为什么我的代码 JavaScript 代码会自我召回
- flutter - 在 Windows Server 2012RE 上颤振 Windows http 剂量工作
- swift - Xcode Error Embedded binary's bundle identifier is not prefixed with parent app's bundle identifier
- python - 如何为 Scrapy Web Scraper 创建测试用例和数据点验证器
- caching - 计算机架构与缓存块大小的关系