• .NET 8如何直接在数据模型中对字符串长度,范围进行验证
  • 发布于 2个月前
  • 137 热度
    0 评论
.NET 8 带来了新的 DataAnnotations , 您可以使用它验证字符串的最小和最大长度,数值的最小和最大范围,指定允许和拒绝的值, Base64 字符串验证。

如何使用
下面的 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 给数据注解特性带来了增强,在日常的开发过程中,也许使用官方提供的数据注解就能满足我们的需求,而不需要使用第三方的验证库,这非常方便。
用户评论