繁体   English   中英

为什么 Decimal 的验证不适用于 ASP.NET Core 3.1 Razor Pages?

[英]Why validation for Decimal not work for ASP.NET Core 3.1 Razor Pages?

为什么 Decimal 的验证不适用于 ASP.NET Core 3.1 Razor Pages?

客户端工作,但在发布数据后,我收到此服务器端验证消息(在我的情况下为 ModelState.IsValid = false)。 值“1.000000”不适用于...

在此处输入图片说明

模型属性:

[Column(TypeName = "decimal(16, 6)")]
public decimal ValueFactor { get; set; }

看法:

<input class="form-control" asp-for="@Model.ValueFactor" />
<span asp-validation-for="ValueFactor" class="text-danger"></span>

事情是在我的计算机的区域设置中,其中十进制符号是逗号。

我找到了一个解决方案,问题是在我的计算机的区域设置中,其中十进制符号是逗号。 服务器端需要小数点分隔符,但我的客户端需要逗号,如图所示,这就是不一致的原因,为了解决这个问题,您只需要更改小数符号类型,如图所示。

Column属性是Code First Data Annotation

为了验证十进制,您需要结合使用正则表达式和范围验证,如下所示:

[RegularExpression(@"^\d+\.\d{6}$")]
[Range(0, 9999999999.999999)]

上面的正则表达式属性将接受“任意数量的数字,后跟点(.)然后是 6 位数字”。 因此接受以下数字:1.000000、500000.000000 etx。

范围属性接受 0 到 9999999999.999999 之间的类型decimal(16,6) 的数字

在服务器端尝试这样的事情。

public class PersonModel
{
    [Required(ErrorMessage = "Required Decimal Number")]
    [RegularExpression(@"^[0-9]+(\.[0-9]{1,100})$", ErrorMessage = "Valid Decimal number with maximum  decimal places.")]
    public string Expenses { get; set; }
}

我的模型

    [Column(TypeName = "decimal(18,2)")]
    public Decimal Bonus { get; set; }

我创建了一个视图模型。

    [Display(Name="Ek Ücret")]
    [RegularExpression(@"^(\d+),(\d{2})$", ErrorMessage = "Tutar 0,00 - 9999999999,99 aralığında olmalıdır. ")]
    public string Bonus { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM