Validazione dei dati del Model con ASP.NET MVC

di Daniele Bochicchio, in ASP.NET MVC, C#,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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