La unobtrusive validation ha il pregio di mantenere separato il markup HTML dal codice javascript necessario a implementare le logiche di validazione lato client. Ciò è possibile grazie a una serie di attributi personalizzati, identificati dal prefisso data-val-*, che vengono automaticamente aggiunti agli elementi che devono essere validati:
<div class="editor-field"> <input type="text" value="" id="FirstName" data-val="true" data-val-required="The FirstName field is required." /> <span data-valmsg-for="FirstName" data-valmsg-replace="true"></span> </div>
L'engine responsabile della unobtrusive validation, al caricamento della pagina, effettua automaticamente il parsing di questi attributi, preoccupandosi poi di aggiungere gli handler e le logiche di controllo necessarie.
Quando carichiamo una view tramite AJAX, per esempio sfruttando l'helper Ajax.ActionLink, l'operazione di parsing di questi attributi è stata già eseguita e, pertanto, il risultato è che la validazione lato client non sarà attiva. Per evitare questo problema, è sufficiente eseguire un'opportuna funzione Javascript al termine del caricamento:
<script type="text/ecmascript"> function initializeValidation() { $.validator.unobtrusive.parse('#contentDiv'); } </script> <div> @Ajax.ActionLink("New person", "Create", new AjaxOptions() { UpdateTargetId = "contentDiv", OnSuccess="initializeValidation" }) </div> <div id="contentDiv"></div>
Nella codice in alto, abbiamo definito una funzione initializeValidation che forza la rilettura degli attributi della unobtrusive validation sul contenuto di contentDiv. Essa verrà automaticamente eseguita al termine del caricamento della nuova view, dato che l'abbiamo referenziata nelle AjaxOptions utilizzate per impostare l'helper.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare la software bill of material (SBOM) in GitHub
Filtering sulle colonne in una QuickGrid di Blazor
Gestione dei nomi con le regole @layer in CSS
Creare agenti facilmente con Azure AI Agent Service
Selettore CSS :has() e i suoi casi d'uso avanzati
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Loggare le query più lente con Entity Framework
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Eseguire script pre e post esecuzione di un workflow di GitHub