C# 使用数据批注进行验证不起作用

C# 使用数据批注进行验证不起作用,c#,.net,C#,.net,我正在开发一个带有客户购买模型的RESTAPI。我已经应用了一些验证,但是我看到对decimal类型的属性的验证不起作用,但是,对string类型的属性的validatios成功地起作用 我的行为是,如果不添加属性,例如,total,则不会应用tha验证,并且该属性采用十进制类型的默认值,即0.0 也就是说,我有以下模型: 公共类CustomerPurchase:BaseEntity { [必需(ErrorMessage=“purchasefoliorerequired”)] 公共字符串对开本{

我正在开发一个带有客户购买模型的RESTAPI。我已经应用了一些验证,但是我看到对decimal类型的属性的验证不起作用,但是,对string类型的属性的validatios成功地起作用

我的行为是,如果不添加属性,例如,total,则不会应用tha验证,并且该属性采用十进制类型的默认值,即0.0

也就是说,我有以下模型:

公共类CustomerPurchase:BaseEntity
{
[必需(ErrorMessage=“purchasefoliorerequired”)]
公共字符串对开本{get;set;}
[必需(ErrorMessage=“PurchaseIvaRequired”)]
[范围(类型(十进制),“0”,“10000000000000000”,ErrorMessage=“PurchaseInvalidVat”)]
公共十进制Iva{get;set;}
[必需(ErrorMessage=“PurchaseSubtotalRequired”)]
[范围(类型(十进制),“0”,“10000000000000000”,ErrorMessage=“PurchaseInvalidSubtotal”)]
公共十进制小计{get;set;}
[必需(ErrorMessage=“PurchaseTotalRequired”)]
[范围(类型(十进制),“0”,“10000000000000000”,ErrorMessage=“PurchaseInvalidTotal”)]
公共十进制总数{get;set;}
[必需(ErrorMessage=“PurchaseTotalettersRequired”)]
公共字符串集合{get;set;}
[必需(ErrorMessage=“PurchaseEmployeeRequired”)]
[BsonRepresentation(BsonType.ObjectId)]
公共字符串用户标识{get;set;}
[必需(ErrorMessage=“PurchaseProductRequired”)]
[MinLength(1,ErrorMessage=“PurchaseProductRequired”)]
public ProductSeld[]产品{get;set;}
[必需(ErrorMessage=“PurchasePaymentRequired”)]
[MinLength(1,ErrorMessage=“PurchasePaymentRequired”)]
公共支付[]支付{get;set;}
[必需(ErrorMessage=“PurchaseClientRequired”)]
公共客户端{get;set;}
}
此应用程序错误?或者有一种方法可以严格应用此验证

感谢阅读

十进制
是一个,因此在本例中它总是有一个默认值-
0
,因此它总是通过您的验证。因此,您可以制作它们:

对于
RequiredAttribute
,我们也非常清楚:

RequiredAttribute
属性指定在验证表单上的字段时,该字段必须包含一个值。如果属性为
null
、包含空字符串(“”)或仅包含空格字符,则引发验证异常


您可以这样编码:

[Range(1, 100)]
[DataType(DataType.Currency)]
[Column(TypeName = "decimal(18, 2)")]
public decimal Price { get; set; }
发件人:

[Range(1, 100)]
[DataType(DataType.Currency)]
[Column(TypeName = "decimal(18, 2)")]
public decimal Price { get; set; }