Validation 如何以串联而不是并行方式应用.net核心批注

Validation 如何以串联而不是并行方式应用.net核心批注,validation,.net-core,annotations,Validation,.net Core,Annotations,在过去的某个时候,我们组织中的某个人决定将相当多的整数值存储为字符串。不知道为什么,但目前我们仍在努力 我现在的问题是,当这些值作为参数传入时,我需要能够验证它们。因此,我想在被序列化的类的属性上实现正则表达式和范围属性注释。如下所示: [RegularExpression(@"\d+", ErrorMessage = "Incorrect format for County code.")] [Range(typeof(int), "001&q

在过去的某个时候,我们组织中的某个人决定将相当多的整数值存储为字符串。不知道为什么,但目前我们仍在努力

我现在的问题是,当这些值作为参数传入时,我需要能够验证它们。因此,我想在被序列化的类的属性上实现正则表达式和范围属性注释。如下所示:

[RegularExpression(@"\d+", ErrorMessage = "Incorrect format for County code.")]
[Range(typeof(int), "001", "150")]
public string County { get; set; }
这样做的问题似乎是它同时应用了两个属性。如果我传入一个整数,它将按预期工作,接受1到150之间的值,如果值超出范围,则给出一个错误。但是,如果我传入非数字字符,比如“abc”,它应该被第一个注释捕获,它会出现异常,因为Range属性只需要数字

我假设我可以创建一个自定义属性来扩展范围并处理非数字字符。我以前做过那种事。但我更愿意让它尽可能简单,如果有某种方法可以迫使注释以串联而不是并行的方式应用,就不要这样做。因此,让它首先应用RegularExpression,然后返回nice错误,甚至不用担心第二个错误