私のenumの値はNoneです。これは、値がまだ選択されていないことを意味します。絶対にデータベースに保存しないでください。EnumでのRegularExpression属性
enum MyEnum
{
None = 0,
SomeValue = 1,
...
}
データアノテーション正規表現を使用して、[値なし]を選択した場合に検証が失敗するような方法はありますか?
私のenumの値はNoneです。これは、値がまだ選択されていないことを意味します。絶対にデータベースに保存しないでください。EnumでのRegularExpression属性
enum MyEnum
{
None = 0,
SomeValue = 1,
...
}
データアノテーション正規表現を使用して、[値なし]を選択した場合に検証が失敗するような方法はありますか?
あなたは[Range(SomeValue, LastValue)]
制約とのより良いチャンスがあるでしょう。
すべての列挙型は0にNoneを定義していない場合、私は次の操作を行うように誘惑されるだろう:
[RegularExpression("[1-9][0-9]*", ErrorMessage = "None should never be saved to database.")]
public MyEnum val { get; set; }
いいえ、うまくいきません、[RegularExpression( "[1-5]")のどちらも、enum値をintに変換する際に問題があるようです。しかし、範囲はうまくいった。 – Goran
範囲はトリックでした。興味深いことに、[RegularExpression( "[1-5]")]は機能しませんが、RegularExpressionは値をintに変換することができました。 – Goran
また、この属性を追加することで、列挙型に値が存在することを保証することもできます: '[EnumDataType(typeof(MyEnum))]' - Value1 = 1、Value2など、列挙型にギャップがある場合に必要です= 2、Value3 = 4、Value4 = 8などです。有効な列挙値のみが使用されるようにしたいとします。 – demoncodemonkey