Maison > développement back-end > C++ > Comment implémenter la validation conditionnelle dans ASP.NET MVC à l'aide des annotations de données et de IValidatableObject ?

Comment implémenter la validation conditionnelle dans ASP.NET MVC à l'aide des annotations de données et de IValidatableObject ?

Patricia Arquette
Libérer: 2025-01-08 17:47:40
original
456 Les gens l'ont consulté

How to Implement Conditional Validation in ASP.NET MVC Using Data Annotations and IValidatableObject?

Implémentation de la validation conditionnelle avec les annotations de données ASP.NET MVC et IValidatableObject

La fonctionnalité de validation conditionnelle d'ASP.NET MVC vous permet de définir des règles de validation qui dépendent d'autres propriétés du modèle. Ceci est inestimable lorsque certains champs ne nécessitent une validation que dans des circonstances spécifiques.

Exemple de validation conditionnelle : un scénario pratique

Illustrons avec un modèle Person contenant Name, IsSenior et une classe Senior imbriquée avec une propriété Description. Nous n'exigerons Senior.Description que si IsSenior est vrai.

Voici le modèle utilisant des annotations de données (une approche plus simple, mais moins flexible) :

<code class="language-csharp">public class Person
{
    [Required(ErrorMessage = "*")]
    public string Name { get; set; }

    public bool IsSenior { get; set; }

    public Senior Senior { get; set; }
}

public class Senior
{
    [Required(ErrorMessage = "*")]  // This validation is not conditionally applied yet.
    public string Description { get; set; }
}</code>
Copier après la connexion

Et un extrait de vue correspondant (à titre d'illustration) :

<code class="language-html">@Html.LabelFor(m => m.Name)
@Html.EditorFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)

@Html.LabelFor(m => m.IsSenior)
@Html.EditorFor(m => m.IsSenior)
@Html.ValidationMessageFor(m => m.IsSenior)

@Html.LabelFor(m => m.Senior.Description)
@Html.EditorFor(m => m.Senior.Description)
@Html.ValidationMessageFor(m => m.Senior.Description) </code>
Copier après la connexion

Validation conditionnelle avancée avec IValidatableObject

Pour une validation conditionnelle plus robuste, ASP.NET MVC propose l'interface IValidatableObject. Implémenter sa méthode Validate permet de définir une logique de validation basée sur l'état global du modèle.

Voici le modèle Person amélioré utilisant IValidatableObject :

<code class="language-csharp">public class Person : IValidatableObject
{
    public string Name { get; set; }
    public bool IsSenior { get; set; }
    public Senior Senior { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (IsSenior && string.IsNullOrEmpty(Senior?.Description))
            yield return new ValidationResult("Description is required for senior citizens.");
    }
}</code>
Copier après la connexion

Cette approche offre une plus grande flexibilité et un plus grand contrôle sur les règles de validation. Pour plus de détails, consultez la documentation Microsoft appropriée (recherchez « IValidatableObject » et ASP.NET MVC). L'exemple ci-dessus utilise l'opérateur conditionnel nul (?.) pour plus de sécurité.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal