En este tutorial vamos a ver cómo realizar la validación de un formulario en ASP .Net Core mediante DataAnnotations.

Los DataAnnotations son una serie de reglas establecidas en el Model que permiten validar sus propiedades según los criterios que queramos. Esto nos permite realizar una validación sencilla de los datos; no obstante, se pierde el principio SOLID al estar todo el código en un mismo sitio.

Empezamos creando un Model llamado Usuario.cs y establecemos las propiedades que va a tener. En mi caso va a tener nombre, apellidos, edad, email, contraseña y confirmación de la contraseña.

public class Usuario:
{
    public string Nombre { get; set; }
    public string Apellidos { get; set; }
    public int Edad { get; set; }
    public string Email { get; set; }
    public string Contrasenia { get; set; }
    public string ConfirmarContrasenia { get; set; }
}


Lo siguiente sería indicar al Model que tiene que heredar de ValidationAttribute y añadir las reglas que queramos que tenga cada atributo.

public class Usuario: ValidationAttribute
{
    [Required(ErrorMessage = "Este campo es requerido.")]
    [MaxLength(100, ErrorMessage = "El nombre no puede contener más de 100 caracteres.")]
    [MinLength(2, ErrorMessage = "El nombre no puede contener menos de 2 caracteres.")]
    public string Nombre { get; set; }

    public string Apellidos { get; set; }

    [Required(ErrorMessage = "Este campo es requerido.")]
    [Range(1, 100, ErrorMessage = "La edad debe estar comprendida entre 1 y 100 años.")]
    public int Edad { get; set; }

    [Required(ErrorMessage = "Este campo es requerido.")]
    [RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Formato incorrecto.")]
    public string Email { get; set; }

    [Required(ErrorMessage = "Este campo es requerido.")]
    [RegularExpression(@"^(?=\w*\d)(?=\w*[A-Z])(?=\w*[a-z])\S{8,16}$", ErrorMessage = "La contraseña debe tener entre 8 y 16 caracteres, al menos un dígito, al menos una minúscula y al menos una mayúscula.")]
    public string Contrasenia { get; set; }

    [Required(ErrorMessage = "Este campo es requerido.")]
    [Compare("Contrasenia", ErrorMessage = "Las contraseñas no coinciden.")]
    public string ConfirmarContrasenia { get; set; }


Debemos importar DataAnnotations para poder usar los atributos que ofrece.

using System.ComponentModel.DataAnnotations;


Yo solo utilicé algunas validaciones, pero existen muchos más. En este enlace aparecen todas:

https://docs.microsoft.com/es-es/dotnet/api/system.componentmodel.dataannotations?view=net-6.0

Continuamos creando un Controller y añadimos un método post al Index. Aquí debemos preguntar si el Usuario que recibimos es válido mediante ModelState.IsValid.

public IActionResult Index()
{
    return View();
}

[HttpPost]
public IActionResult Index(Usuario usuario)
{
    if (ModelState.IsValid)
    {
        ViewBag.Mensaje = "Usuario correcto.";
        return View();
    }
    return View();
}


Ahora creamos la vista (se puede hacer mediante scaffolding) y añadimos un ViewBag para que muestre el mensaje.

<h3 style="color:dodgerblue">@ViewBag.Mensaje</h3>


Finalmente añadimos un enlace en el Layout y ya estaría.

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="ValidarFormulario" asp-action="Index">
        Validar formulario
    </a>
</li>



Esta es solo una validación sencilla, pero se puede completar más realizando comprobaciones personalizadas con sus métodos y, en caso de querer algo más complejo, lo mejor sería utilizar Fluent Validation.



Autor: María del Mar Carrión García
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2021-2022
Código: https://github.com/MariMar9/ValidacionFormularios.git

This Post Has One Comment

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.