La gestione della validazione con ASP.NET MVC è demandata in parte al Controller ed in parte alla View, per le rispettive parti, utilizzando ovviamente il Model.
Se si fa il paragone con i Validator Control di ASP.NET, in ASP.NET MVC non è presente un controllo in grado di fare tutto, ma è necessario utilizzare un metodo specifico, Html.ValidationMessage, il cui primo parametro indica il nome del campo di validazione ed il secondo il testo da visualizzare. Questo è il codice che va inserito all'interno della View:
<%= Html.ValidationSummary("Si sono verificati degli errori.") %> <% using Html.BeginForm("Create", "TestController", FormMethod.Post) {%> Nome: <%= Html.TextBox("FirstName") %> <%= Html.ValidationMessage("FirstName", "*") %> ...form... <%}%>
Quando si opta per l'utilizzo di un modello strongly typed è necessario definire una classe Person tra i Model e poi aggiungere l'attributo Inherits in questo modo:
<%@ Page ... Inherits="System.Web.Mvc.ViewPage<Test.Models.Person>" %>
Così facendo è possibile specificare un Action in grado di accettare direttamente un'istanza di Person. Nel nostro caso si traduce nella possibilità di avere in automatico un oggetto di tipo ModelState corrispondente al nostro Model, su cui poter aggiungere, attraverso il metodo AddModelError, un eventuale errore, perchè è ASP.NET MVC a crearlo in automatico per ogni Model. Completa il discorso la proprietà IsValid, che indica se se sono presenti all'interno della collection degli errori. Il codice presente nel Controller sarà dunque simile a questo:
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(Person p) { // logica di validazione if (string.IsNullOrEmpty(person.FirstName.Trim())) { ModelState.AddModelError("FirstName", "Il nome è necessario"); } // azione da effettuare se i dati non sono validi: // richiamo nuovamente la View di registrazione, passando l'istanza if (!ModelState.IsValid) { return View("Register", person); } // View da visualizzare in caso di successo return View("Sucess"); }
Da sottolineare che utilizzando Html.ValidationSummary è possibile inserire, dove è posizionata la chiamata, la descrizione associata a ciascuna convalida non andata a buon fine, avendo quindi un riepilogo all'interno della View.
Per maggiori approfondimenti su ASP.NET MVC si veda:
http://mvc.aspitalia.com/
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub