https://mp.weixin.qq.com/s/IWpUKlIrW_QB0T2aKGyYRg
下面的 Product 类使用了 .NET 8 的新数据注解特性。
public class Product
{
[Length(2, 20)]
public string Name { get; set; }
[Range(1, 1000, MinimumIsExclusive = true, MaximumIsExclusive = false)]
public double Price { get; set; }
[AllowedValues("IOS", "Android")]
public string Platform { get; set; }
[DeniedValues("PC")]
public string Source { get; set; }
[Base64String]
public string Description { get; set; }
}
LengthAttribute
System.ComponentModel.DataAnnotations.LengthAttribute 指定字符串或集合的下限和上限。比如 Name ,最小值应为 2,最大值应为 20:
[Length(2, 20)]
public string Name { get; set; }
这意味着 Name 必须包含 2 到 20 个字符,否则无效。
Range
RangeAttribute.MinimumIsExclusive 和 RangeAttribute.MaximumIsExclusive 指定数字是否包含在允许范围内。
[Range(1, 100, MinimumIsExclusive = true, MaximumIsExclusive = false)]
public double Price { get; set; }
Range 表示在指定的范围内,当前的 Range 的值应该为 1-100, MinimumIsExclusive = true 表示不包含最小值,MaximumIsExclusive = false 表示允许包含最大值,所以 Price 的范围是1 < Price <= 100 ,超过这个范围的值是不允许的。
Base64StringAttribute
Base64StringAttribute 验证字符串是否为有效的 Base64 表示形式,这很简单。
[Base64String]
public string Description { get; set; }
AllowedValuesAttribute & DeniedValuesAttribute
AllowedValuesAttribute 和 DeniedValuesAttribute 指定允许和拒绝的值。
[AllowedValues("IOS", "Android")]
public string Platform { get; set; }
上面的 Platform 属性,只允许使用 IOS 和 Android。
[DeniedValues("PC")]
public string Source { get; set; }
同样的,上面的 DeniedValues 表示,Source 属性的值不应该为 PC。
.NET 8 给数据注解特性带来了增强,在日常的开发过程中,也许使用官方提供的数据注解就能满足我们的需求,而不需要使用第三方的验证库,这非常方便。
文档更新时间: 2024-01-30 08:38 作者:admin