如何绑定可为空的十进制值
How to bind nullable decimal values
我在使用 ASP.NET 核心 MVC 和 decimal?
值时遇到问题。
我有以下视图模型:
public class BlobViewModel
{
public int Id { get; set; }
public int? IntegerValue { get; set; }
public string StringValue { get; set; }
[DataType(DataType.Date)]
public DateTime? DateValue { get; set; }
public decimal? DecimalValue { get; set; }
}
以及我认为的以下输入元素
<input asp-for="DecimalValue" class="form-control" />
当我输入十进制值时,例如“68.5”或“68,5”并跳出输入元素,出现以下错误:
The value '68.5' is not valid for DecimalValue.
我已经尝试使用 属性 上方的 [DataType(DataType.Currency)]
属性,但我似乎无法使绑定生效。其他属性按预期绑定。
有人知道我是如何做到这一点的吗?
如果您的本地 Windows 设置未设置为美国本地化并且您正在使用默认 asp.net
模板 jquery
验证来验证十进制值,则会出现错误。无论您的小数位数是 nullable
还是不是
,都应该会出现错误
在 ASP.NET Core
我不认为你可以在 web.config
中强制本地化到美国,因为你在 this 中的回答与你在 [=17] 中的方式相同=] 和更早的版本,因此您必须添加 javascript 来覆盖 jquery.validate.js
作为同一问题的答案。
创建一个名为 validationlocalization
的 js
文件并将其放入您的 wwwroot\js
文件夹中,其中包含以下内容
$.validator.methods.range = function (value, element, param) {
var globalizedValue = value.replace(",", ".");
return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
}
$.validator.methods.number = function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
}
在需要十进制验证的 cshtml
页面中,将对 javascript
文件的引用添加到您的脚本部分。确保在引用现有 _ValidationScriptsPartial.
之后添加它
@section Scripts {
...
<script src="~/js/validationlocalization.js"></script>
More detail 关于此解决方法
我在使用 ASP.NET 核心 MVC 和 decimal?
值时遇到问题。
我有以下视图模型:
public class BlobViewModel
{
public int Id { get; set; }
public int? IntegerValue { get; set; }
public string StringValue { get; set; }
[DataType(DataType.Date)]
public DateTime? DateValue { get; set; }
public decimal? DecimalValue { get; set; }
}
以及我认为的以下输入元素
<input asp-for="DecimalValue" class="form-control" />
当我输入十进制值时,例如“68.5”或“68,5”并跳出输入元素,出现以下错误:
The value '68.5' is not valid for DecimalValue.
我已经尝试使用 属性 上方的 [DataType(DataType.Currency)]
属性,但我似乎无法使绑定生效。其他属性按预期绑定。
有人知道我是如何做到这一点的吗?
如果您的本地 Windows 设置未设置为美国本地化并且您正在使用默认 asp.net
模板 jquery
验证来验证十进制值,则会出现错误。无论您的小数位数是 nullable
还是不是
在 ASP.NET Core
我不认为你可以在 web.config
中强制本地化到美国,因为你在 this 中的回答与你在 [=17] 中的方式相同=] 和更早的版本,因此您必须添加 javascript 来覆盖 jquery.validate.js
作为同一问题的答案。
创建一个名为 validationlocalization
的 js
文件并将其放入您的 wwwroot\js
文件夹中,其中包含以下内容
$.validator.methods.range = function (value, element, param) {
var globalizedValue = value.replace(",", ".");
return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
}
$.validator.methods.number = function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
}
在需要十进制验证的 cshtml
页面中,将对 javascript
文件的引用添加到您的脚本部分。确保在引用现有 _ValidationScriptsPartial.
@section Scripts {
...
<script src="~/js/validationlocalization.js"></script>
More detail 关于此解决方法