如何在数据注释中为此构建正则表达式
本文关键字:构建 正则表达式 注释 数据 | 更新日期: 2023-09-27 17:50:59
我正在做数据注释验证…我需要验证一个属性,该属性应该只包含以下单词:"Active"或"Termination"。可以使用正则表达式吗?因为现在我有了一个单独的自定义类,如下所示。
Class Status
{
Override IsValid()
{
if (!(value.ToString().ToUpper() == "ACTIVE" || value.ToString().ToUpper() == "TERMINATION"))
return err;
}
}
如果您感兴趣的话,您实际上可以创建一个通用的Custom Validator
,而不是像op中提到的那样创建一个单独的class
。
下面的代码展示了如何创建自定义Validator。
[AttributeUsage(AttributeTargets.Property)]
public class EqualsToTextAttribute : ValidationAttribute
{
#region Instance Fields
private readonly string[] textToCompare;
#endregion
#region Constructors
public EqualsToTextAttribute(string[] textToCompare)
{
this.textToCompare = textToCompare;
}
#endregion
#region Protected Methods
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value == null || string.IsNullOrWhiteSpace(value.ToString()))
{
return ValidationResult.Success;
}
if (this.textToCompare.Any(text => string.Equals(value.ToString(), text, StringComparison.OrdinalIgnoreCase)))
{
return ValidationResult.Success;
}
return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
}
#endregion
}
下面的代码展示了如何使用自定义数据注释属性:
[EqualsToText(new[] { "Active", "Termination" })]
public string TestString
{
get
{
return this.testString;
}
set
{
//This is to test the validation. Can be removed if you are using the control which applies Validation attributes automatically, e.g. DataGrid
Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "TestString" });
this.testString = value;
}
}
以下正则表达式将匹配这些字符串中的任意一个,不区分大小写:
/^Active|Termination$/i