You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为类属性指定合法字符串值集合?无需自定义验证器可行吗?

无需自定义验证器的实现方案

可以实现,借助.NET内置的验证特性就能完成需求,以下是两种常用方案:

方案一:使用正则表达式验证特性

直接给Brand属性添加RegularExpression特性,通过正则匹配限定合法值集合,示例代码如下:

public class Product
{
    public Guid Guid { get; set; }  

    [Required]
    [RegularExpression(@"^(Audi|BMW|Mercedes)$", ErrorMessage = "品牌必须是Audi、BMW或Mercedes中的一个")]
    public string Brand { get; set; }
}

该正则会严格匹配字符串是否等于指定的三个品牌之一,若需要忽略大小写,可以添加RegexOptions.IgnoreCase参数,修改为:
[RegularExpression(@"^(Audi|BMW|Mercedes)$", ErrorMessage = "品牌必须是Audi、BMW或Mercedes中的一个", Options = RegexOptions.IgnoreCase)]

方案二:改用枚举类型定义合法值

将Brand的类型从string改为自定义枚举,用枚举值直接限定允许的品牌范围,示例代码如下:

首先定义枚举:

public enum BrandEnum
{
    Audi,
    BMW,
    Mercedes
}

然后修改Product类:

public class Product
{
    public Guid Guid { get; set; }  

    [Required]
    public BrandEnum Brand { get; set; }
}

这种方式下,Brand属性只能取枚举中定义的三个值,模型绑定或验证阶段会自动拦截非法值。如果需要接收字符串形式的枚举值,可配合[EnumDataType(typeof(BrandEnum))]特性,确保字符串能正确转换为枚举并完成合法性验证。

内容的提问来源于stack exchange,提问作者Yoda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:05:23