Condividi tramite


Procedura: convalidare i dati

È possibile applicare le regole di convalida a un'entità o a una tabella per garantire che i dati correttamente formattati vengano scritti nell'origine dati.Una regola di convalida è una condizione o un vincolo al quale devono conformarsi i dati dell'applicazione.In LightSwitch è possibile aggiungere una o più regole di convalida a un'entità o a una tabella.Se un utente aggiunge o modifica dei dati e tali dati non sono conformi alle regole di convalida, LightSwitch visualizzerà un errore.Prima che un utente possa eseguire il commit dei dati, è necessario correggere l'errore di convalida.

La seguente illustrazione mostra un messaggio di errore di convalida.

Messaggio di errore di convalida

LightSwitch include molte regole di convalida incorporate.È possibile configurare queste regole e applicarle a un'entità o a una tabella senza scrivere alcun codice.È inoltre possibile utilizzare il codice per definire delle regole di convalida personalizzate.

Di seguito sono elencate le diverse sezioni di questo argomento:

  • Applicazione delle regole di convalida predefinite a un campo

  • Applicazione delle regole di convalida personalizzate a un campo

  • Applicazione delle regole di convalida personalizzate ai dati in una schermata

  • Applicazione delle regole di convalida che vengono eseguite quando vengono salvati i dati

Collegamento a video Per una dimostrazione video correlata, vedere Ricerca per categorie: Scrivere regole business per la convalida e i campi calcolati in un'applicazione LightSwitch Application?.

Applicazione delle regole di convalida predefinite a un campo

LightSwitch include molte regole di convalida incorporate che è possibile utilizzare senza scrivere codice personalizzato.È possibile applicare queste regole ai singoli campi di dati o a qualsiasi tipo di aggiornamento che gli utenti fanno ai dati in una schermata.

Per applicare una regola di convalida predefinita a un campo

  1. In Esplora soluzioni fare doppio clic sull'entità o sulla tabella alla quale si desidera applicare le regole di convalida.

    L'entità o la tabella verrà aperta nella finestra di progettazione dei dati.

  2. Nella finestra di progettazione dei dati, selezionare il campo che si desidera convalidare.

  3. Nella finestra Proprietà, nella sezione Convalida, impostare il valore di una delle proprietà.

    Per ulteriori informazioni sulle proprietà di convalida, vedere Riferimento: proprietà della finestra di progettazione dei dati.

Applicazione delle regole di convalida personalizzate a un campo

È possibile definire le regole di convalida personalizzate mediante la scrittura di codice.È possibile specificare quando queste regole di convalida sono applicate da LightSwitch.Ad esempio, è possibile specificare che una regola di convalida in un campo sia applicata immediatamente dopo che un utente abbia digitato un valore.In alternativa, è possibile specificare che un'entità o una tabella venga valutata solo dopo che tutti i suoi campi contengano un valore.Questo modello ha senso quando la validità di un valore in un campo si basa su un valore valido in un altro campo della stessa entità o tabella.

Per applicare una regola di convalida personalizzata a un campo

  1. In Esplora soluzioni fare doppio clic sull'entità o sulla tabella alla quale si desidera applicare le regole di convalida.

    L'entità o la tabella verrà aperta nella finestra di progettazione dei dati.

  2. Nella finestra di progettazione dei dati, selezionare il campo che si desidera convalidare.

  3. Nella finestra Proprietà, fare clic su Convalida personalizzata.

    Nell' Editor di codice viene aperto e generato un metodo denominato NomeCampo[_Validate].

  4. Aggiungere il codice di convalida al metodo FieldName[_Validate].

    Per applicare una regola di convalida immediatamente dopo che un utente ha fornito un valore del campo, chiamare il metodo AddPropertyError del parametro results.

    Nell'esempio seguente viene visualizzato un messaggio di convalida dopo che un utente ha impostato il campo ShippedDate dell'entità Order su una data che è successiva ad oggi.

    Private Sub ShippedDate_Validate(results As EntityValidationResultsBuilder)
        If Me.ShippedDate > DateTime.Today Then
            results.AddPropertyError _
                ("Shipped date cannot be later than today")
        End If
    
    End Sub
    
    partial void ShippedDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.ShippedDate > DateTime.Today)
        {
            results.AddPropertyError("Shipped date cannot be later than today");
        }
    
    }
    

    Si noti che è possibile evidenziare altre proprietà per la convalida.Ad esempio, è possibile scrivere il codice di convalida in esecuzione quando un utente modifica il codice postale di un cliente.Se si passa la proprietà City come parametro al metodo AddPropertyError, LightSwitch evidenzierà il campo City.Il testo del messaggio di errore di convalida potrebbe richiedere all'utente di digitare il nome di una città che corrisponde al nuovo codice postale.

    [!NOTA]

    Per impostazione predefinita, non è possibile eseguire il commit degli aggiornamenti di un'origine dati fino a quando non saranno conformi alle regole di convalida.Se si desidera abilitare gli utenti a eseguire il commit degli aggiornamenti non valutati, utilizzare il metodo AddPropertyResult invece del metodo AddPropertyError.Per il secondo parametro del metodo AddPropertyResult, passare ValidationSeverity.Informational o ValidationSeverity.Warning.

    Per applicare una regola di convalida su un'entità o una tabella, ad esempio, quando un utente modifica un valore in un campo che si basa su un valore valido in un altro campo, chiamare il metodo AddEntityError del parametro results.Nell'esempio seguente viene confrontato il valore del campo RequiredDate con il valore del campo OrderDate.Se la data dell'ordine è successiva alla data richiesta, questo codice visualizza un messaggio di errore della convalida.

    Private Sub RequiredDate_Validate(results As EntityValidationResultsBuilder)
        If Me.RequiredDate < Me.OrderDate Then
            results.AddEntityError _
                ("Required data cannot be earlier than the order date")
        End If
    
    End Sub
    
    partial void RequiredDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.RequiredDate < this.OrderDate)
        {
            results.AddEntityError
                ("Required data cannot be earlier than the order date"); 
        }
    
    }
    

Applicazione delle regole di convalida personalizzate ai dati in una schermata

È possibile specificare le regole di convalida personalizzate che si applicano a una schermata intera aggiungendo del codice personalizzato al metodo <nome dell'entità o della tabella>[_Validate] nel file di codice della schermata.Il codice personalizzato viene eseguito quando un utente modifica i dati nella schermata (ad esempio, aggiunge o elimina dati).Queste regole vengono eseguite prima che i dati possano essere salvati.

Per applicare una regola di convalida personalizzata ai dati in una schermata

  1. In Esplora soluzioni fare doppio clic sulla schermata per la quale si desidera specificare una regola di convalida.

  2. Nella parte superiore della finestra Progettazione schermata, fare clic su Scrivi codice.

    Verrà aperto l' Editor di codice.

  3. Dal menu Dichiarazioni, selezionare <nome dell'entità o della tabella>[_Validate].

    Un blocco di codice denominato <nome dell'entità o della tabella>[_Validate] viene visualizzato nel file di codice.

  4. Aggiungere il codice di convalida personalizzato al metodo <nome dell'entità o della tabella>[_Validate].

    Per applicare una regola di convalida dopo che un utente ha aggiunto, eliminato, o aggiornato una riga di dati, chiamare il metodo AddScreenError del parametro results.

    Il seguente esempio impedisce l'eliminazione dei clienti che si trovano negli Stati Uniti.

    Private Sub Customers_Validate _
        (results As Microsoft.LightSwitch.Framework.Client.ScreenValidationResultsBuilder)
        If Me.DataWorkspace.NorthwindData.Details.HasChanges Then
            Dim changeSet As EntityChangeSet = _
                Me.DataWorkspace.NorthwindData.Details.GetChanges()
    
            Dim entity As IEntityObject
    
            For Each entity In changeSet.DeletedEntities.OfType(Of Customer)()
    
                Dim cust As Customer = CType(entity, Customer)
                If cust.Country = "USA" Then
                    entity.Details.DiscardChanges()
                    results.AddScreenResult("Unable to remove this customer." & _
                        "Cannot delete customers that are located in the USA.", _
                         ValidationSeverity.Informational)
                End If
    
            Next
        End If
    
    End Sub
    
    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);
                }
            }
        }
    
    }
    

    [!NOTA]

    Per impostazione predefinita, non è possibile eseguire il commit degli aggiornamenti di un'origine dati fino a quando non saranno conformi alle regole di convalida.Se si desidera abilitare gli utenti a eseguire il commit degli aggiornamenti non valutati, utilizzare il metodo AddScreenResult invece del metodo AddScreenError.Per il secondo parametro del metodo AddScreenResult, passare ValidationSeverity.Informational o ValidationSeverity.Warning.

Applicazione delle regole di convalida che vengono eseguite quando vengono salvati i dati

È possibile applicare le regole di convalida personalizzate quando un utente salva i dati o quando il codice chiama il metodo SaveChanges di un'origine dati.Questo tipo di convalida viene eseguita esclusivamente sul livello server.

Per applicare le regole di convalida che vengono eseguite quando vengono salvati i dati

  1. In Esplora soluzioni fare doppio clic sull'entità o sulla tabella alla quale si desidera applicare le regole di convalida.

  2. Nella barra dei comandi della finestra di progettazione dei dati, fare clic sulla freccia accanto al pulsante Scrivi codice, quindi fare clic sul nome dell'entità o della tabella[_Validate].

    Verrà aperto l' Editor di codice e verrà generato un metodo denominato nome dell'entità o della tabella[_Validate].

  3. Aggiungere il codice di convalida personalizzato al metodo nome dell'entità o della tabella[_Validate].

    Chiamare il metodo AddEntityError del parametro results.

    Nell'esempio seguente viene controllato lo stato del credito di un cliente quando un utente salva un ordine di vendita.Se il credito del cliente non è ancora stato concesso dall'ufficio finanziario, viene generata un'eccezione ValidationException.

    Private Sub Orders_Validate _
        (entity As Order, results As  _
         Microsoft.LightSwitch.EntitySetValidationResultsBuilder)
        If Not CustomerCreditApproval(entity.Customer) Then
            results.AddEntityError("Customer Credit has not yet been approved")
        End If
    
    End Sub
    Private Function CustomerCreditApproval(ByVal entity As Customer) As Boolean
        'Some custom code to check the customer’s credit status.
        Return True
    
    End Function
    
            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;
            }
    
    

    [!NOTA]

    Per impostazione predefinita, quando viene generata l'eccezione, viene visualizzato un messaggio di errore e i dati restano nel set di modifiche corrente.Se si desidera modificare questo comportamento, è possibile gestire l'eccezione ValidationException nel codice.

Vedere anche

Attività

Procedura: gestire gli eventi di dati

Procedura: definire i campi dati

Concetti

Esecuzione delle attività relative ai dati tramite codice

Utilizzo degli oggetti correlati ai dati nel codice

Scrittura di codice in LightSwitch

Altre risorse

Overview of Data Validation in LightSwitch Applications

Dati: informazioni sottostanti l'applicazione