Nel precedente script #1015 abbiamo visto come ASP.NET MVC 2 contenga un supporto per validare i dati inseriti dall'utente tramite un sistema basato sulle DataAnnotation. Per migliorare la user experience, è possibile effettuare questa verifica anche sul client, a patto di aggiungere alla master page i riferimenti ai file Javascript seguenti (già inclusi nel template di default di Visual Studio):
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> <script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> <script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
A questo punto all'interno di una View è sufficiente invocare il metodo EnableClientValidation per far sì che il framework inietti automaticamente l'opportuno codice Javascript in base alle DataAnnotation delle entity:
<% Html.EnableClientValidation(); %> <% using (Html.BeginForm()) {%> ...
Bisogna prestare attenzione al fatto, però, che tale tipologia di validazione non è sostitutiva di quella lato server, visto che non ci sono garanzie sul fatto che l'utente abbia effettivamente attivato gli script; pertanto è sempre necessario verificare anche a livello di controller la correttezza dei dati ottenuti in POST:
[HttpPost] public ActionResult Create(Person person) { if (!this.ModelState.IsValid) .... }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Eseguire operazioni con timeout in React
Short-circuiting della Pipeline in ASP.NET Core
Implementare il throttling in ASP.NET Core
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Load test di ASP.NET Core con k6
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Usare un KeyedService di default in ASP.NET Core 8
Generare file per il download da Blazor WebAssembly