Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

Règles de Validation dans .NET MAUI : un plugin intéressant

L'assurance de la qualité des données dans votre application est une étape cruciale pour tout développement d'application robuste. Dans le contexte de .NET MAUI, il est indispensable de mettre en place des règles de validation pour s'assurer que les données fournies par les utilisateurs sont conformes aux exigences métier. Ce billet vise à vous guider à travers l'utilisation de la bibliothèque Plugin.ValidationRules créée par Luis Matos pour simplifier cette tâche.

Qu'est-ce que la Validation ?

La validation est le processus qui permet de vérifier que les données saisies par un utilisateur respectent certaines conditions ou règles avant d'être enregistrées ou traitées. Une règle de validation retourne généralement une valeur booléenne (True ou False) et peut inclure un message d'erreur à afficher en cas d'échec de la validation.

Configuration

Pour utiliser Plugin.ValidationRules, vous devez d'abord l'ajouter à votre projet .NET MAUI. Voici comment faire :

  • Dans l'Explorateur de solutions, faites un clic droit sur le projet et sélectionnez "Gérer les packages NuGet".
  • Dans la barre de recherche, tapez Plugin.ValidationRules et installez le package correspondant.

On notera que cet bibliothèque .NET Standard 2.0 n'est pas très récente et qu'elle a été mise à jour en 2022 pour supporter .NET 6.0. S'agissant de pur code (sans renderer) cela n'est pas problématique d'autant que le code source se trouve sur GitHub pour qui voudrait ajouter des comportements ou corriger un éventuel bogue (https://github.com/luismts/ValidationRulesPlugin).

C'est de toute façon plus un prétexte pour parler de la validation des données, sujet essentiel, que pour présenter cette bibliothèque qui malgré tout présente quelques avantages. Ce que vous allez découvrir dans un instant…

Utilisation de la Bibliothèque

Définition des Règles

La bibliothèque fournit un ensemble de règles de validation couramment utilisées. Vous pouvez également créer vos propres règles en implémentant l'interface IValidationRule<T>.

using Plugin.ValidationRules.Interfaces;
namespace ValidationRulesTest.Validations
{
    public class IsNotNullOrEmptyRule : IValidationRule<string>
    {
        public string ValidationMessage { get; set; }
        public bool Check(string value)
        {
            return !string.IsNullOrWhiteSpace(value);
        }
    }
}

Propriétés et Règles

Après avoir défini vos règles, vous pouvez les associer à des propriétés dans votre ViewModel. Utilisez la classe Validatable<T> pour définir ces propriétés.

using Plugin.ValidationRules;
namespace ValidationRulesTest.ViewModels
{
    public class Example1ViewModel
    {
        public Example1ViewModel()
        {
            Email = Validator.Build<string>()
                .WithRule(new IsNotNullOrEmptyRule(), "A email is required.")
                .WithRule(new EmailRule(), "Email is not valid.");
        }
        public Validatable<string> Email { get; set; }
    }
}

Validation des Propriétés

Pour déclencher la validation, appelez la méthode Validate() sur la propriété concernée.

var isValidEmail = Email.Validate();

Gestion des Erreurs

Si la validation échoue, vous pouvez récupérer les erreurs en utilisant les propriétés Errors et Error de l'objet Validatable.

List<string> errors = Email.Errors;
string error = Email.Error;
bool hasErrors = Email.HasErrors;

Affichage des Résultats dans XAML

Pour lier vos propriétés et erreurs à votre fichier XAML, utilisez la syntaxe suivante :

<Entry Text="{Binding Email.Value, Mode=TwoWay}" />
<Label Text="{Binding Email.Error}" TextColor="Red" HorizontalTextAlignment="Center" />

Utilisation de EventToCommandBehavior pour la Validation

Dans certains cas, vous souhaiterez peut-être déclencher la validation en réponse à un événement spécifique sur un contrôle, comme le fait de perdre le focus (Unfocused). Pour ce faire, vous pouvez utiliser EventToCommandBehavior pour lier cet événement à une commande dans votre ViewModel.

Exemple de Code

Dans votre fichier XAML, ajoutez le comportement EventToCommandBehavior à l'élément que vous souhaitez valider. Liez l'événement Unfocused à une commande dans votre ViewModel.

<Entry Text="{Binding Email.Value, Mode=TwoWay}">
    <Entry.Behaviors>
        <behaviors:EventToCommandBehavior EventName="Unfocused" Command="{Binding ValidateEmailCommand}" />
    </Entry.Behaviors>
</Entry>

Dans votre ViewModel, ajoutez la commande ValidateEmailCommand qui appelle la méthode Validate() sur la propriété Email.

public ICommand ValidateEmailCommand => new Command(() => Email.Validate());

Conclusion

Plugin.ValidationRules offre une manière simple et efficace de mettre en place une validation côté client dans vos applications .NET MAUI. Il permet non seulement de valider les données, mais aussi d'informer l'utilisateur en cas d'erreur de validation.

Stay Tuned !

Le Guide Complet de.NET MAUI ! Lien direct Amazon : https://amzn.eu/d/95wBULD

Près de 500 pages dédiées à l'univers .NET MAUI !

Existe aussi en version Kindle à prix réduit !

Faites des heureux, PARTAGEZ l'article !