Saltar apartados

Validación modelo

Ya hemos trabajado con la presentación de los datos, y ahora es el momento de validar que los datos que se introducen son correctos, para luego almacenarlo (eso será en la próxima sesión).

Para validar los datos deberemos pulsar el botón almacenar y a ¿dónde nos lleva el entorno?. Pues a ningún sitio porque debemos crear un nuevo método que gestione la información introducida. Ese método se debe llamar igual que el de presentación pero con una serie de diferencia.

  1. Deberemos pasar como parámetro el modelo con el que hemos trabajado en la edición, en nuestro caso catalogador
  2. Debe incluir, con una definición, que los datos se reciben por POST. Esto se consigue poniendo [HttpPost] antes de la declaración del método

 

Por tanto el resultado sería el siguiente

 Accion Editar con método POST

 

Se controla en una excepción toda la lógica de almacenamiento. Primero validamos, en caso correcto almacenaremos los datos y en caso contrario mostramos de nuevo la vista.

Si lo probamos veremos que funciona y que nos redirige al método Index, que si tenemos definido correctamente (incluyendo la vista) veremos que nos lleva allí, porque el modelo ha sido validado.

La pregunta que nos hacemos ahora es, ¿qué valida?. Nosotros no hemos definido ninguna regla que tenga que cumplir nuestro modelo.

 

Reglas de validación

Para asignar reglas, debemos acudir de nuevo al modelo y comenzar a añadir definiciones. Para poder añadirlas debemos incluir los espacios de nombres

using System.ComponentModel.DataAnnotations;

using System.ComponentModel;

using System.Web.Mvc;

para que podamos usar los atributos de validación.

 

Vamos a poner una muy básica, que sea obligatorio el campo CSS [Required].

Definir un campo obligatorio

También en ocasiones no nos gusta que aparezca como etiqueta el nombre del campo del modelo, si no que queremos una descripción propia en el caso de Css queremos que sea Hoja de estilos [DisplayName].

Definimos la descripción del campo

Si generamos la solución y editamos, veremos que ya queda reflejada la nueva descripción

 Visualizar editor

Además si no ponemos ningún valor en el campo Hoja de estilo y pulsamos el botón Actualizar, observaremos que nos aparece un mensaje de error.

 Validación de la acción editar

Otras definiciones que podemos encontrar son: (http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html)

  • [HiddenInput] Indica que el campo no es visible
  • [UIHint("TemplateControl")] Indica la plantilla que se debe utilizar para mostrar este campo. Hay disponible un ejemplo de plantillas para los datos del modelo.
  • [ScaffoldColumn(false)] En los casos en los que el tipo de campo no sepa como representarlo, le decimos que lo ignore
  • DisplayColumn Define el comportamiento de Html.DisplayText() y Html.DisplayTextFor().
  • DataType Podemos especificar el tipo de dato que es. De esa manera se puede personalizar el formato. Por ejemplo si se especifica como [DateType(DateType.data)] el formato que le aplica es {0:d}
  • DisplayFormat [DisplayFormat(DataFormatString = "{0:c}")]
  • [ReadOnly(true)] Campo de sólo lectura
  • [Range(EntreValor, HastaValor, ErrorMessage="El valor tiene que estar entre EntreValor y HastaValor")] Indicamos el rango válido para un número
  • [StringLength(12)] Tamaño máximo que puede ocupar la cadena de texto
  • [RegularExpression("^[A-Za-z]+$", ErrorMessage:="Sólo se permiten letra en la contraseña")} Expresión regular que debe cumplir el campo. Hay disponible un ejemplo de crear atributos personalizados para evitar el uso de expresiones regulares en el código, que en ocasiones puede hacerlo engorroso y complicado de mantener.

 

Hay disponible un ejemplo de validación para revisar parte de las definicione más comunes.

 

Servicio de Informática ASP.NET MVC 2 Framework


Universidad de Alicante
Carretera de San Vicente del Raspeig s/n
03690 San Vicente del Raspeig
Alicante (Spain)

Tel: (+34) 96 590 3400

Fax: (+34) 96 590 3464

Para más información: informacio@ua.es, y para temas relacionados con este servidor Web: webmaster@ua.es

Carretera San Vicente del Raspeig s/n - 03690 San Vicente del Raspeig - Alicante - Tel. 96 590 3400 - Fax 96 590 3464