Heim > Backend-Entwicklung > C++ > So implementieren Sie eine bedingte Eigenschaftsvalidierung mit IcalIdatableObject in .NET?

So implementieren Sie eine bedingte Eigenschaftsvalidierung mit IcalIdatableObject in .NET?

Susan Sarandon
Freigeben: 2025-01-28 11:41:39
Original
926 Leute haben es durchsucht

How to Implement Conditional Property Validation Using IValidatableObject in .NET?

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

Hier ist ein Code -Snippet, das die Implementierung veranschaulicht:

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;
    }
}
Nach dem Login kopieren
Dieser Code verwendet die Eigenschaft

, 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

Um diese Validierung zu verwenden:

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)
}
Nach dem Login kopieren
Einstellung

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage