Maison >développement back-end >C++ >Comment valider la longueur combinée de plusieurs propriétés dans ASP.NET MVC à l'aide d'annotations de données ?

Comment valider la longueur combinée de plusieurs propriétés dans ASP.NET MVC à l'aide d'annotations de données ?

DDD
DDDoriginal
2025-01-16 19:26:10677parcourir

How to Validate the Combined Length of Multiple Properties in ASP.NET MVC using Data Annotations?

Utilisez des annotations de données pour vérifier la longueur combinée de plusieurs attributs dans ASP.NET MVC

Dans ASP.NET MVC, il est courant d'utiliser l'annotation StringLength pour valider la longueur d'une seule propriété. Cependant, il existe des situations dans lesquelles vous devez vérifier la longueur combinée de plusieurs propriétés. Cet article explore une approche conforme à MVC pour atteindre cet objectif à l'aide d'annotations de données.

Attributs de validation personnalisés

Pour valider la longueur combinée de plusieurs propriétés, vous pouvez créer une propriété de validation personnalisée. Voici un exemple :

<code class="language-csharp">public class CombinedMinLengthAttribute : ValidationAttribute
{
    public CombinedMinLengthAttribute(int minLength, params string[] propertyNames)
    {
        this.PropertyNames = propertyNames;
        this.MinLength = minLength;
    }

    public string[] PropertyNames { get; private set; }
    public int MinLength { get; private set; }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var properties = this.PropertyNames.Select(validationContext.ObjectType.GetProperty);
        var values = properties.Select(p => p.GetValue(validationContext.ObjectInstance, null)).OfType<string>();
        var totalLength = values.Sum(x => x?.Length ?? 0) + (value?.ToString()?.Length ?? 0); //处理空值情况

        if (totalLength < MinLength)
        {
            return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
        }

        return ValidationResult.Success;
    }
}</code>

Comment utiliser

Pour utiliser cette propriété personnalisée, vous pouvez l'utiliser pour décorer une propriété dans votre modèle de vue :

<code class="language-csharp">public class MyViewModel
{
    [CombinedMinLength(20, "Bar", "Baz", ErrorMessage = "Foo, Bar 和 Baz 属性的组合最小长度应大于 20")]
    public string Foo { get; set; }
    public string Bar { get; set; }
    public string Baz { get; set; }
}</code>

Lorsque le modèle est validé, la méthode IsValid de la propriété personnalisée est appelée et la longueur combinée de la propriété spécifiée est validée par rapport à la longueur minimale spécifiée ainsi que la valeur de la propriété décorée. Le code amélioré ajoute la gestion des valeurs nulles et évite le potentiel NullReferenceException.

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