VALIDARE E PERSISTERE I DATI
VISUALIZZARE E PERSONALIZZARE GLI ERRORI DI VALIDAZIONE
La validazione è intesa lato server, questo perché la correttezza dei dati viene verificata non nel Browser ma nell’applicazione ASP.NET Core. Il problema di ciò che abbiamo implementato sino adesso è che se anche la validazione non ha avuto successo, l’utente non viene avvisato in alcun modo. Microsoft ha predisposto dei TagHelper appositi per visualizzare gli errori di validazione.
LA VALIDAZIONE LATO CLIENT
La validazione lato server è essenziale e non dovremmo mai e poi mai farne a meno. C’è da dire tuttavia che tale validazione non offre una buona esperienza utente in quanto l’utente avrebbe notifica degli errori solo dopo aver inviato le informazioni al server. Vediamo come aggiungere la validazione lato client, ossia prima che il form venga inviato. L’attributo asp-for aggiunge anche preziose informazioni nell’HTML e che riguardano tutte le regole di validazione che abbiamo impostato.
Per utilizzare la validazione lato client ci servono un paio di librerie, la prima jquery-validation, mentre la seconda jquery-validation-unobtrusive. Questa libreria è di Microsoft.
Questo è il codice della partial view _Validation, richiamata dalla View Create.cshtml. È inoltre necessario aggiungere @RenderSection(“Scripts”, required: false) nella View _Layout.cshtml.
IMPEDIRE LA CREAZIONE DI CONTENUTI DUPLICATI
Si tratta di andare a verificare nel database se quel titolo esiste già. Vediamo prima di tutto come si crea una Data Annotation personalizzata.
Questa è una tecnica non consigliata proprio perché non supporta la dependency injection e l’esecuzione asincrona. Ci sono inoltre problemi di concorrenza. Essendo ASP.NET Core una tecnologia Multi-Thread può capitare che due Thread concorrenti vadano a creare lo stesso corso.
Una soluzione ci viene offerta dal database creando un vincolo UNIQUE sul titolo.
Vediamo il blocco TRY-CATCH che cattura l’errore SQLite dovuto alla violazione del vincolo UNIQUE nel metodo CreateCourseAsync di AdoNetCourseService.
Vediamo il codice del Controller.
VERIFICARE LATO CLIENT L’ESISTENZA DI UN TITOLO
La verifica lato Client e la verifica lato Server hanno scopi differenti, quella fatta lato client supporterà l’utente durante la digitazione del form, quella lato server ha lo scopo di proteggere il nostro database ed evitare che ci finiscano dentro valori non validi.
Vediamo la Data Annotation che ci consente di inviare richieste AJAX per la verifica lato client.
Guarda tutti i metodi implementati nel controller e nei servizi applicativi.
LINK AL CODICE SU GITHUB
Scaricare il codice della sezione15 o clonare il repository GITHUB per avere a disposizione tutte le sezioni nel tuo editor preferito.
Scrivi un commento