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
- Utilizzare una qualunque lista per i parametri di tipo params in C#
- Includere un button in un component ed esporne l'evento click in Angular
- #SQLServer #Modeling (codename Oslo) CTP di nov 2009 aggiornato per VS 2010 RC: http://u.aspitalia.com/fi
- .NET Conference Italia 2019 Live - Milano
- Accedere a file XML remoti con ASP.NET
- Creare una libreria CSS universale: Nav menu
- Utilizzare funzioni di istanza con le Azure Function
- A quick tour around Azure Dev Spaces