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