2012-04-09 7 views
3

Meine enums haben einen Wert von None, was bedeutet, dass ein Wert noch nicht ausgewählt wurde. Keine sollte niemals in der Datenbank gespeichert werden.RegularExpression-Attribut mit Enum

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

Gibt es eine Möglichkeit, ich Datenaufbelichtung RegulaererAusdruck so verwenden können, dass die Validierung fehlschlagen sollte, wenn keine Wert ausgewählt wird?

Antwort

2

Sie werden mit einem [Range(SomeValue, LastValue)] Zwang eine bessere Chance haben.

+0

Reichweite hat den Trick gemacht. Interessant, dass [RegularExpression ("[1-5]")] nicht funktioniert, scheint, dass der Bereich den Wert irgendwie in int konvertieren konnte, während RegularExpression dies nicht tat. – Goran

+0

Sie können auch sicherstellen, dass der Wert in der Enumeration vorhanden ist, indem Sie auch dieses Attribut hinzufügen: '[EnumDataType (typeof (MyEnum))]] - Dies kann erforderlich sein, wenn Sie Lücken in Ihrer Enumeration haben, wie Value1 = 1, Value2 = 2, Value3 = 4, Value4 = 8 usw. und Sie möchten sicherstellen, dass nur gültige Enum-Werte verwendet werden. – demoncodemonkey

0

würde ich versucht sein, Folgendes zu tun, wenn alle Aufzählungen Keine definieren 0 sein:

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

Nein, es funktioniert nicht, auch nicht [RegularExpression ("[1-5]")], es scheint ein Problem mit der Konvertierung von enum-Wert in int zu sein. Range hat jedoch funktioniert. – Goran