Comment : valider des données dans une application LightSwitch

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

En appliquant des règles de validation à une entité ou une table, vous pouvez garantir l'écriture de données correctement mises en forme dans la source de données pour une application Visual Studio LightSwitch. Une règle de validation est une condition ou contrainte à laquelle les données de votre application doivent se conformer. Si vous pouvez ajouter une ou plusieurs règles de validation à une entité ou une table, une erreur s'affiche lorsqu'un utilisateur ajoute ou modifie des données de façon non conforme. L'erreur de validation doit être corrigée pour permettre à l'utilisateur de valider les données.

L'illustration suivante montre un message d'erreur de validation.

Validation, message d’erreur

LightSwitch inclut plusieurs règles de validation intégrées. Vous pouvez configurer ces règles et les appliquer à une entité ou une table sans écrire de code. Vous pouvez également utiliser du code pour définir des règles de validation personnalisées.

Cette rubrique contient les sections suivantes :

lien vers la vidéo Pour une démonstration vidéo connexe, consultez la vidéo montrant comment écrire des règles d'entreprise pour la validation et les champs calculés dans une application LightSwitch.

LightSwitch inclut plusieurs règles de validation intégrées que vous pouvez utiliser sans écrire de code personnalisé. Vous pouvez appliquer ces règles à des champs de données individuels ou à toute sorte de mise à jour apportée par les utilisateurs aux données d'un écran.

Pour appliquer une règle de validation prédéfinie à un champ

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel de l'entité ou la table auxquelles vous voulez appliquer des règles de validation, puis choisissez Ouvrir.

    L'entité ou la table s'ouvre dans le Concepteur de données.

  2. Dans le Concepteur de données, choisissez le champ à valider.

    System_CAPS_ICON_note.jpg Remarque

    Pour les applications mises à niveau vers Visual Studio 2012 Update 2, vous pouvez également choisir la couche où la validation doit se produire à partir des boutons de la barre Perspective.

  3. Dans la fenêtre Propriétés, dans la section Validation, définissez la valeur de l'une des propriétés.

    Pour plus d'informations sur les propriétés de validation, consultez Référence : propriétés du concepteur de données.

Vous pouvez définir des règles de validation personnalisées en écrivant du code et vous pouvez spécifier le moment où LightSwitch les applique. Par exemple, vous pouvez spécifier qu'une règle est appliquée immédiatement après qu'un utilisateur a entré une valeur dans un champ. Sinon, vous pouvez spécifier qu'une entité ou une table est évaluée uniquement une fois que tous ses champs contiennent une valeur. Ce modèle est approprié lorsque la validité d'une valeur d'un champ repose sur la validité d'une valeur d'un autre champ de la même entité ou table.

Pour appliquer une règle de validation personnalisée à un champ

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel de l'entité ou la table auxquelles vous voulez appliquer des règles de validation, puis choisissez Ouvrir.

    L'entité ou la table s'ouvre dans le Concepteur de données.

  2. Dans le Concepteur de données, choisissez le champ à valider.

  3. Dans la fenêtre Propriétés, choisissez le lien Validation personnalisée.

    L'Éditeur de code s'ouvre et génère une méthode nommée Nom_champ_Validate.

  4. Ajoutez le code de validation à la méthode Nom_champ_Validate.

    Pour appliquer une règle de validation immédiatement après qu'un utilisateur a fourni une valeur de champ, appelez la méthode AddPropertyError du paramètre results.

    L'exemple suivant affiche un message de validation après qu'un utilisateur a défini le champ ShippedDate de l'entité Order à une date ultérieure à celle du jour.

            partial void ShippedDate_Validate(EntityValidationResultsBuilder results)
            {
                if (this.ShippedDate > DateTime.Today)
                {
                    results.AddPropertyError("Shipped date cannot be later than today");
                }
    
            }
    

    Notez que vous pouvez mettre en surbrillance d'autres propriétés pour la validation. Par exemple, vous pouvez écrire du code de validation qui s'exécute lorsqu'un utilisateur modifie le code postal d'un client. Si vous passez la propriété City en tant que paramètre à la méthode AddPropertyError, LightSwitch met en surbrillance le champ City. Le texte de votre message d'erreur peut inviter l'utilisateur à taper le nom d'une ville qui correspond au nouveau code postal.

    System_CAPS_ICON_note.jpg Remarque

    Par défaut, les mises à jour d'une source de données ne peuvent pas être validées tant qu'elles ne sont pas conformes aux règles de validation. Pour permettre aux utilisateurs de valider des mises à jour non évaluées, utilisez la méthode AddPropertyResult à la place de la méthode AddPropertyError. Pour le deuxième paramètre de la méthode AddPropertyResult, passez ValidationSeverity.Informational ou ValidationSeverity.Warning.

    Pour appliquer une règle de validation à une entité ou une table, par exemple, lorsqu'un utilisateur modifie la valeur d'un champ qui repose sur la validité de la valeur d'un autre champ, appelez la méthode AddEntityError du paramètre results. L'exemple suivant compare la valeur du champ RequiredDate à la valeur du champ OrderDate. Si la date de commande est ultérieure à la date requise, ce code affiche un message d'erreur de validation.

            partial void RequiredDate_Validate(EntityValidationResultsBuilder results)
            {
                if (this.RequiredDate < this.OrderDate)
                {
                    results.AddEntityError
                        ("Required data cannot be earlier than the order date"); 
                }
    
            }
    

Vous pouvez spécifier des règles de validation personnalisées qui s'appliquent à un écran entier en ajoutant du code personnalisé à la méthode Nom_entité_ou_table_Validate dans le fichier de code de l'écran. Votre code personnalisé s'exécute lorsqu'un utilisateur modifie (par exemple, ajoute ou supprime) des données dans l'écran. Ces règles s'exécutent avant que les données ne puissent être enregistrées.

Pour appliquer une règle de validation personnalisée à des données dans un écran

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel de l'écran pour lequel vous souhaitez spécifier une règle de validation, puis choisissez Ouvrir.

  2. En haut du Concepteur d'écran, choisissez le bouton Écrire le code.

    L'Éditeur de code s'ouvre.

  3. Dans la liste Déclarations, choisissez Propriété_nom_entité_ou_table _Validate.

    Un bloc de code nommé Propriété_nom_entité_ou_table_Validate apparaît dans le fichier de code.

  4. Ajoutez votre code de validation personnalisé à la méthode Propriété_nom_entité_ou_table_Validate.

    Pour appliquer une règle de validation après qu'un utilisateur a ajouté, supprimé ou mis à jour une ligne de données, appelez la méthode AddScreenError du paramètre results.

    L'exemple suivant empêche la suppression des clients qui se trouvent aux États-Unis.

            partial void Customers_Validate(ScreenValidationResultsBuilder results)
            {
                if (this.DataWorkspace.NorthwindData.Details.HasChanges)
                {
                    EntityChangeSet changeSet =
                    this.DataWorkspace.NorthwindData.Details.GetChanges();
                    foreach (IEntityObject entity in changeSet.DeletedEntities.OfType<Customer>())
                    {
                        Customer cust = (Customer)entity;
                        if (cust.Country == "USA")
                        {
                            entity.Details.DiscardChanges();
                            results.AddScreenResult("Unable to remove this customer. " +
                            "Cannot delete customers that are located in the USA.",
                            ValidationSeverity.Informational);
                        }
                    }
                }
    
            }
    

    System_CAPS_ICON_note.jpg Remarque

    Par défaut, les mises à jour d'une source de données ne peuvent pas être validées tant qu'elles ne sont pas conformes aux règles de validation. Pour permettre aux utilisateurs de valider des mises à jour non évaluées, utilisez la méthode AddScreenResult à la place de la méthode AddScreenError. Pour le deuxième paramètre de la méthode AddScreenResult, passez ValidationSeverity.Informational ou ValidationSeverity.Warning.

Vous pouvez appliquer des règles de validation personnalisées lorsqu'un utilisateur enregistre des données ou lorsque votre code appelle la méthode SaveChanges d'une source de données. Ce genre de validation s'exécute exclusivement sur la couche serveur.

Pour appliquer des règles de validation qui s'exécutent lorsque des données sont enregistrées

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel de l'entité ou la table auxquelles vous voulez appliquer des règles de validation, puis choisissez Ouvrir.

    System_CAPS_ICON_note.jpg Remarque

    Pour les applications mises à niveau vers Visual Studio 2012 Update 2, dans la barre Perspective, choisissez l'onglet Serveur.

  2. Dans la barre de commandes du Concepteur de données, dans la liste Écrire le code, choisissez Nom_entité_ou_table_Validate.

    L'Éditeur de code s'ouvre et génère une méthode nommée Nom_entité_ou_table_Validate.

  3. Ajoutez votre code de validation personnalisé à la méthode Nom_entité_ou_table_Validate.

    Appelez la méthode AddEntityError du paramètre results.

    L'exemple suivant permet de vérifier l'état du crédit d'un client lorsqu'un utilisateur enregistre une commande. Si le crédit du client n'a pas été approuvé par le service de financement, l'exception ValidationException est levée.

            partial void Orders_Validate
                (Order entity, EntitySetValidationResultsBuilder results)
            {
                if (!CustomerCreditApproval(entity.Customer))
                {
                    results.AddEntityError
                        ("Customer Credit has not yet been approved");
                }
            }
    
            private bool CustomerCreditApproval(Customer entity)
            {
                //Some custom code to check the customer's credit status.
                return true;
            }
    
    

    System_CAPS_ICON_note.jpg Remarque

    Par défaut, lorsque l'exception est levée, un message d'erreur s'affiche et les données restent dans l'ensemble de modifications actuel. Si vous voulez modifier ce comportement, vous pouvez gérer l'exception ValidationException dans votre code.

Overview of Data Validation in LightSwitch Applications
Données : les informations de votre application
Réalisation de tâches liées aux données à l'aide du code
Utilisation d'objets liés aux données dans le code
Comment : Gérer les événements de données
Comment : Définir des champs de données

Afficher: