2012-04-09 4 views
3

Мои перечисления имеют значение None, а это означает, что значение еще не выбрано. Ничего не следует сохранять в базе данных.Атрибут RegularExpression с Enum

enum MyEnum 
{ 
    None = 0, 
    SomeValue = 1, 
... 
} 

Есть ли способ, что я могу использовать аннотацию RegularExpression данных таким образом, что проверка должна потерпеть неудачу, если выбрано значение None?

ответ

2

Вы будете иметь больше шансов с [Range(SomeValue, LastValue)] ограничения.

+0

Диапазон сделал трюк. Интересно, что [RegularExpression («[1-5]»)] не работает, кажется, что диапазон смог каким-то образом преобразовать значение в int, а RegularExpression - нет. – Goran

+0

Вы также можете убедиться, что это значение существует в перечислении, добавив этот атрибут тоже: '[EnumDataType (typeof (MyEnum))] - это может потребоваться, если у вас есть пробелы в вашем перечислении, такие как Value1 = 1, Value2 = 2, Value3 = 4, Value4 = 8 и т. Д., И вы хотите убедиться, что используются только действительные значения enum. – demoncodemonkey

0

Я был бы соблазн сделать следующее, если все ваши перечисления определить Нет, чтобы быть 0:

[RegularExpression("[1-9][0-9]*", ErrorMessage = "None should never be saved to database.")] 
public MyEnum val { get; set; } 
+0

Нет, это не работает, также [RegularExpression ("[1-5]")], кажется, что существует проблема с преобразованием значения enum в int. Однако диапазон работал. – Goran

Смежные вопросы