Implémentez la vérification conditionnelle AvalidatableObject
Dans le domaine de la vérification des données, l'interface IvalidAtableObject joue un rôle vital, ce qui permet une vérification au niveau de l'objet et peut comparer différents attributs d'objets. Lorsque vous devez vérifier un seul attribut et en même temps, vous pouvez ignorer sélectivement une certaine panne de vérification dans des scénarios spécifiques, AvalidatableObject fournit une solution flexible.
Cet article introduira comment utiliser ivalidAtableObject pour implémenter la vérification conditionnelle. Méthode
pour vérifier l'attribut. Si cet attribut est désactivé, les résultats efficaces sont renvoyés et l'état de Validate()
et Enabled
est ignoré. Cependant, si cet attribut est activé, vous vérifierez si Prop1
et Prop2
répondent aux exigences de portée. Prop1
Prop2
Les étapes de la mise en œuvre efficace de la vérification conditionnelle sont les suivantes:
Créer des classes de vérification:
[Required]
Dans la méthode [Range]
, utilisez Validate()
, vérifiez les conditions (telles que Validator.TryValidateProperty()
attributs) pour déterminer si la défaillance de vérification de certains attributs doit être ignorée. Validate()
Enable
Effectuer la vérification au niveau de l'objet.
<code class="language-csharp">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 (this.Enable) { Validator.TryValidateProperty(this.Prop1, new ValidationContext(this, null, null) { MemberName = "Prop1" }, results); Validator.TryValidateProperty(this.Prop2, new ValidationContext(this, null, null) { MemberName = "Prop2" }, results); // 附加条件验证规则 if (this.Prop1 > this.Prop2) { results.Add(new ValidationResult("Prop1 必须大于 Prop2")); } } return results; } }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!