« Volver
in asp.net mvc read.

[ASP.NET MVC] Estableciendo reglas de validación.

Uno de los puntos más importantes cuando se realizan aplicaciones Web es la de validar los datos ingresados por el usuario y todos aquellos datos que se envían a la base de datos, y en este punto al framework ASP.NET MVC permite definir muchas validaciones directamente en el modelo, y la ventaja de establecer estas reglas de validación en el modelo es que automáticamente se realizará la validación en el cliente como en el servidor, entonces vamos a revisar todo el proceso de validación, así que vamos a iniciar creando una clase que va actuar como nuestro modelo:

1: publicclass Cliente 2: { 3: publicint ClienteId { get; set; } 4: publicstring Nombre { get; set; } 5: publicstring Apellido { get; set; } 6: publicstring Email { get; set; } 7: publicint Edad { get; set; } 8: publicstring SitioWeb { get; set; } 9: }

Ahora vamos a crear el controlador, en este caso solo vamos a definir dos acciones:

1: publicclass ClienteController : Controller 2: { 3: public ActionResult Index() 4: { 5: return View(); 6: } 7: 8: public ActionResult Create() 9: { 10: return View(); 11: } 12: }

En el momento la lógica de las acciones de los controladores no es importante, y ahora vamos a crear la vista para la acción Create:

1: @model Validando_Formularios.Models.Cliente 2: @{ 3: ViewBag.Title = "Create"; 4: } 5: <h2>Createh2> 6: @using (Html.BeginForm()) { 7: @Html.ValidationSummary(true) 8: <fieldset> 9: <legend>Clientelegend> 10:  11: <divclass="editor-label"> 12: @Html.LabelFor(model => model.Nombre) 13: div> 14: <divclass="editor-field"> 15: @Html.EditorFor(model => model.Nombre) 16: @Html.ValidationMessageFor(model => model.Nombre) 17: div> 18:  19: <divclass="editor-label"> 20: @Html.LabelFor(model => model.Apellido) 21: div> 22: <divclass="editor-field"> 23: @Html.EditorFor(model => model.Apellido) 24: @Html.ValidationMessageFor(model => model.Apellido) 25: div> 26:  27: <divclass="editor-label"> 28: @Html.LabelFor(model => model.Email) 29: div> 30: <divclass="editor-field"> 31: @Html.EditorFor(model => model.Email) 32: @Html.ValidationMessageFor(model => model.Email) 33: div> 34:  35: <divclass="editor-label"> 36: @Html.LabelFor(model => model.Edad) 37: div> 38: <divclass="editor-field"> 39: @Html.EditorFor(model => model.Edad) 40: @Html.ValidationMessageFor(model => model.Edad) 41: div> 42:  43: <divclass="editor-label"> 44: @Html.LabelFor(model => model.SitioWeb) 45: div> 46: <divclass="editor-field"> 47: @Html.EditorFor(model => model.SitioWeb) 48: @Html.ValidationMessageFor(model => model.SitioWeb) 49: div> 50: <p> 51: <inputtype="submit"value="Create"/> 52: p> 53: fieldset> 54: } 55: <div> 56: @Html.ActionLink("Back to List", "Index") 57: div> 58: @section Scripts { 59: @Scripts.Render("~/bundles/jqueryval") 60: }

Y ahora si ejecutamos la aplicación y damos click en el botón Create nos damos cuenta que no existe ninguna validación… ahora como la idea es realizar la validación de los campos vamos a hacer uso de Data Annotations, en resumen Data Annotations lo que nos permite es establecer ciertas reglas para cada una de nuestras propiedades, entonces si modificamos la clase cliente y añadimos algunas reglas lo que tenemos es:

1: publicclass Cliente 2: { 3: publicint ClienteId { get; set; } 4:  5: [Required(ErrorMessage="El nombre es requerido")] 6: [Display(Name="Nombre Completo", Description="xxxxx")] 7: publicstring Nombre { get; set; } 8:  9: [Required(ErrorMessage = "El apellido es requerido")] 10: publicstring Apellido { get; set; } 11:  12: [Required(ErrorMessage = "El email es requerido")] 13: [EmailAddress(ErrorMessage = "El email no tiene el formato correcto")] 14: publicstring Email { get; set; } 15:  16: [Required(ErrorMessage = "La edad es requerida")] 17: [Range(12,50,ErrorMessage="La edad debe estar entre los 12 y los 50 años")] 18: publicint Edad { get; set; } 19:  20: [Required(ErrorMessage="El sitio Web es requerido")] 21: [Url(ErrorMessage="La dirección del sitio Web no es válida")] 22: publicstring SitioWeb { get; set; } 23: }

Revisando la clase y sus propiedades, tenemos algunas reglas establecidas:

  • Required: Especifíca que el valor es requerido
  • Display: El texto relacionado al campo, este será el texto del label que acompaña a la caja de texto.
  • Range: Permite definir un rango de valores aceptados.
  • EmailAddress: Valida que el valor ingresado tenga el formato correcto de una dirección de correo electrónico.
  • Url: Valida que el valor ingresado sea una URL con formato valido.

Cada una de las anteriores opciones, permiten parametrizar el texto que se muestra cuando el valor ingresado es incorrecto o no cumple las reglas definidas, esto se logra dando un valor al atributo ErrorMessage.

Ahora, si lanzamos la aplicación y damos en Create las reglas establecidas se disparan y podemos ver los errores encontrados:

image

image

Y como se ve en las imágenes, las reglas definidas en el modelo funcionan perfectamente.

Posteriormente vamos a revisar como podemos crear atributos de validación personalizados.

Espero les sea de utilidad el post… Saludos!

comments powered by Disqus