bedingte Validierung in .NET mit iValIdatableObject
Die IValidatableObject
-Schinschnittstelle bietet eine leistungsstarke Möglichkeit, um eine umfassende Objektvalidierung in .NET durchzuführen, einschließlich kreuzer Überprüfungen. Das selektiv ignorierte Ignorieren von Validierungsregeln, die auf bestimmten Bedingungen basieren, kann jedoch schwierig sein. In diesem Beispiel wird gezeigt
public class ValidateMe : IValidatableObject { [Required] public bool Enable { get; set; } [Range(1, 5)] public int Prop1 { get; set; } [Range(1, 5)] public int Prop2 { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { var results = new List<ValidationResult>(); if (Enable) { // Conditionally validate Prop1 and Prop2 Validator.TryValidateProperty(Prop1, new ValidationContext(this, null, null) { MemberName = "Prop1" }, results); Validator.TryValidateProperty(Prop2, new ValidationContext(this, null, null) { MemberName = "Prop2" }, results); // Add a custom conditional validation rule if (Prop1 > Prop2) { results.Add(new ValidationResult("Prop1 must be less than or equal to Prop2")); } } return results; } }
, um die Validierung zu steuern. Wenn Enable
wahr ist, validiert es Enable
und Prop1
mit dem Attribut Prop2
und einer benutzerdefinierten Regel, die sicherstellt, dass [Range]
nicht größer als Prop1
ist. Die Prop2
-Methode ist der Schlüssel; Es fügt der Liste Validator.TryValidateProperty()
nur Validierungsfehler hinzu, wenn die Validierung fehlschlägt. results
public void PerformValidation() { var toValidate = new ValidateMe { Enable = true, Prop1 = 6, //This will cause a validation error Prop2 = 2 }; bool validateAllProperties = false; // Important: Set to false for conditional validation var results = new List<ValidationResult>(); bool isValid = Validator.TryValidateObject(toValidate, new ValidationContext(toValidate, null, null), results, validateAllProperties); //Process validation results (results list) }
bis validateAllProperties
ist entscheidend. Dies verhindert, dass false
die bedingte Validierungslogik überschreibt. Dieser Ansatz kombiniert Validator.TryValidateObject()
mit einer bedingten Validierung für eine flexible und robuste Objektvalidierung in Ihren .NET -Anwendungen. IValidatableObject
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine bedingte Eigenschaftsvalidierung mit IcalIdatableObject in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!