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 必须包含 220 个字符,否则无效。

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