Maison >développement back-end >C++ >Comment valider la longueur combinée de plusieurs propriétés dans ASP.NET MVC ?

Comment valider la longueur combinée de plusieurs propriétés dans ASP.NET MVC ?

DDD
DDDoriginal
2025-01-16 19:37:11822parcourir

How to Validate Combined Length of Multiple Properties in ASP.NET MVC?

Utilisation d'annotations de données pour implémenter la vérification de combinaison multi-attributs ASP.NET MVC

Dans ASP.NET MVC, vous pouvez facilement utiliser l'annotation de données StringLength pour valider la longueur d'une seule propriété. Toutefois, dans certains cas, vous devrez peut-être vérifier la longueur combinée de plusieurs propriétés de chaîne. Cet article décrit l'approche MVC recommandée pour y parvenir à l'aide d'annotations de données personnalisées.

Schéma : Attributs de validation personnalisés

Pour valider la longueur combinée, créez un attribut de validation personnalisé :

<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 < this.MinLength)
        {
            return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
        }
        return ValidationResult.Success;
    }
}</code>

Comment utiliser

Dans votre modèle de vue, décorez les propriétés souhaitées avec des propriétés personnalisées :

<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>

Avec ce paramètre, si la longueur combinée des propriétés Foo, Bar et Baz est inférieure à la longueur minimale spécifiée, la validation du modèle échouera avec le message d'erreur défini dans les propriétés. La gestion des valeurs nulles a été ajoutée au code pour éviter les exceptions causées par les valeurs d'attribut nulles. Les messages d'erreur ont également été localisés pour être plus conviviaux.

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