Maison >développement back-end >C++ >Comment implémenter la validation conditionnelle dans ASP.NET Core en utilisant IvalidAtableObject?

Comment implémenter la validation conditionnelle dans ASP.NET Core en utilisant IvalidAtableObject?

DDD
DDDoriginal
2025-01-28 11:46:10686parcourir

How to Implement Conditional Validation in ASP.NET Core using IValidatableObject?

Dans ASP.NET Core, utilisez ivalidAtableObject pour implémenter la vérification conditionnelle

L'interface ivalidateableObject est un outil pratique pour vérifier l'objet Core ASP.NET. Il vous permet de définir des règles de vérification personnalisées qui peuvent comparer les attributs ou les scénarios de vérification des conditions de traitement.

Un cas commun de l'interface consiste à vérifier certains attributs uniquement dans des conditions spécifiques. Par exemple, le fragment de code suivant démontre un objet qui ne peut être vérifié que lorsque l'activation du logo de réglage est définie:

Cette méthode n'est pas la plus appropriée dans tous les cas, car elle doit vérifier le logo Activer dans la méthode de valeur et renvoyer manuellement les résultats efficaces.
<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)
    {
        if (!this.Enable)
        {
            // 返回有效结果
            yield break;
        }
        else
        {
            // 检查Prop1和Prop2是否满足其范围要求,并相应地返回结果
            if (this.Prop1 < 1 || this.Prop1 > 5)
            {
                yield return new ValidationResult("Prop1必须在1到5之间", new[] { "Prop1" });
            }
            if (this.Prop2 < 1 || this.Prop2 > 5)
            {
                yield return new ValidationResult("Prop2必须在1到5之间", new[] { "Prop2" });
            }
        }
    }
}</code>

Une autre méthode consiste à utiliser la méthode Validator.Try ValiderProperty () dans la méthode de valeur. Cette méthode vous permet de spécifier la vérification pour des attributs spécifiques:

Dans ce cas, ce n'est que lorsque la vérification échoue, la méthode Validator.TryValidatProperty () ajoutera les résultats de vérification à l'ensemble des résultats. En utilisant cette méthode, vous pouvez vérifier les attributs conditionnellement en fonction de l'objet de l'objet pour rendre votre logique de vérification plus flexible et plus facile à entretenir. Notez que est ajouté ici pour souligner plus clairement les mauvais attributs.
<code class="language-csharp">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", new[] { "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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn