Для этого вы можете создать атрибут, унаследованный от ValidationAttribute
.
[AttributeUsage(AttributeTargets.Property, Inherited = true)]
public class StringRangeAttribute : ValidationAttribute
{
public string[] AllowableValues { get; set; }
public override bool IsValid(object value)
{
string actualValue = value as string;
if (AllowableValues?.Contains(actualValue) == true)
{
return true;
}
return false;
}
}
И использовать его так:
[StringRange(AllowableValues = new string[] { "VIC", "NSW", "QLD", "SA", "TAS", "WA"})]
public string State{ get; set; }
Здесь мы используем метод Contains
Линка * в массиве.
Если вам требуется опция без учета регистра, то, как указывает Кодексер, вы можете использовать:
if (AllowableValues?.Contains(actualValue?.ToUpper()) == true)