2012-04-09 48 views
3

我的枚举值为None,这意味着尚未选择一个值。永远不应该保存到数据库。使用Enum的RegularExpression属性

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

有没有一种方法可以使用数据注释RegularExpression以验证失败的方式,如果选择None值?

回答

2

你有一个[Range(SomeValue, LastValue)]约束一个更好的机会。

+0

Range取得了诀窍。有趣的是[RegularExpression(“[1-5]”)]不起作用,似乎该范围能够以某种方式将值转换为int,而RegularExpression没有。 – Goran 2012-04-09 14:40:18

+0

您还可以通过添加此属性来确保该值存在于枚举中:'[EnumDataType(typeof(MyEnum))]' - 如果您的枚举中有空位,例如Value1 = 1,Value2 = 2,Value3 = 4,Value4 = 8等,并且您希望确保只使用有效的枚举值。 – demoncodemonkey 2014-03-24 14:20:34

0

我会被诱惑做到以下几点,如果你所有的枚举定义无以0:

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

不,它不起作用,[RegularExpression(“[1-5]”)]也没有,似乎将枚举值转换为int有问题。然而,范围确实有效。 – Goran 2012-04-09 14:41:28