2012-04-09 10 views
3

私のenumの値はNoneです。これは、値がまだ選択されていないことを意味します。絶対にデータベースに保存しないでください。EnumでのRegularExpression属性

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

データアノテーション正規表現を使用して、[値なし]を選択した場合に検証が失敗するような方法はありますか?

答えて

2

あなたは[Range(SomeValue, LastValue)]制約とのより良いチャンスがあるでしょう。

+0

範囲はトリックでした。興味深いことに、[RegularExpression( "[1-5]")]は機能しませんが、RegularExpressionは値をintに変換することができました。 – Goran

+0

また、この属性を追加することで、列挙型に値が存在することを保証することもできます: '[EnumDataType(typeof(MyEnum))]' - Value1 = 1、Value2など、列挙型にギャップがある場合に必要です= 2、Value3 = 4、Value4 = 8などです。有効な列挙値のみが使用されるようにしたいとします。 – demoncodemonkey

0

すべての列挙型は0にNoneを定義していない場合、私は次の操作を行うように誘惑されるだろう:

[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

関連する問題