0Pricing
C# Academy · Lección

Validación con Data Annotations

Valide modelos con atributos.

Validación con Data Annotations es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

¿Qué es la validación con anotaciones de datos?

Las anotaciones de datos son atributos que se colocan en las propiedades de los modelos para declarar reglas de validación directamente en las clases de C#. ASP.NET Core lee estos atributos durante el enlace de modelos y valida automáticamente las solicitudes entrantes.

Se encuentran en el espacio de nombres System.ComponentModel.DataAnnotations.

using System.ComponentModel.DataAnnotations;

public class RegisterRequest
{
    [Required]
    public string Username { get; set; }
}

El atributo [Required]

[Required] garantiza que una propiedad no sea null (ni una cadena vacía de forma predeterminada). Si el cliente omite el campo, la validación del modelo falla antes de que se ejecute su acción.

Puede personalizar el mensaje con ErrorMessage.

public class RegisterRequest
{
    [Required(ErrorMessage = "Username is required.")]
    public string Username { get; set; }

    [Required]
    public string Password { get; set; }
}

Validación de números con [Range]

[Range] limita un valor numérico a un mínimo y un máximo inclusivos. Funciona con int, double, decimal y otros tipos.

Úselo para edades, cantidades, valoraciones y cualquier número con límites definidos.

public class ProductRequest
{
    [Range(1, 1000, ErrorMessage = "Quantity must be between 1 and 1000.")]
    public int Quantity { get; set; }

    [Range(0.01, 9999.99)]
    public decimal Price { get; set; }
}

Validación de correos electrónicos con [EmailAddress]

[EmailAddress] comprueba que una cadena tenga el aspecto de una dirección de correo electrónico válida. Combínelo con [Required] para garantizar que el campo esté presente y tenga el formato correcto.

public class ContactRequest
{
    [Required]
    [EmailAddress(ErrorMessage = "Please enter a valid email.")]
    public string Email { get; set; }
}

Restricciones de longitud de cadenas

[StringLength] establece una longitud máxima y, de forma opcional, una mínima para el texto. [MinLength] y [MaxLength] son alternativas más sencillas.

public class RegisterRequest
{
    [Required]
    [StringLength(20, MinimumLength = 3)]
    public string Username { get; set; }

    [MaxLength(500)]
    public string Bio { get; set; }
}

Coincidencia de patrones con [RegularExpression]

[RegularExpression] valida una cadena comparándola con un patrón regex. Es ideal para formatos como números de teléfono, códigos postales o slugs.

public class ProfileRequest
{
    [RegularExpression(@"^[a-z0-9-]+$",
        ErrorMessage = "Slug may only contain lowercase letters, digits and dashes.")]
    public string Slug { get; set; }
}

Comparación de dos campos con [Compare]

[Compare] garantiza que una propiedad coincida con otra. El caso clásico es confirmar una contraseña.

public class RegisterRequest
{
    [Required]
    public string Password { get; set; }

    [Compare(nameof(Password), ErrorMessage = "Passwords do not match.")]
    public string ConfirmPassword { get; set; }
}

Cómo informa ModelState de los errores

Cuando la validación falla, ASP.NET Core rellena ModelState con los errores. En un controlador de API decorado con [ApiController], las solicitudes no válidas devuelven automáticamente una respuesta 400, por lo que rara vez tendrá que comprobarlo manualmente.

[ApiController]
[Route("api/[controller]")]
public class AccountController : ControllerBase
{
    [HttpPost("register")]
    public IActionResult Register(RegisterRequest request)
    {
        // [ApiController] already returned 400 if invalid
        return Ok("Registered " + request.Username);
    }
}

Comprobaciones manuales de ModelState

Sin [ApiController] (por ejemplo, en controladores MVC), debe comprobar ModelState.IsValid usted mismo y decidir cómo responder.

public IActionResult Register(RegisterRequest request)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    return Ok();
}

Combinación de varias anotaciones

Las anotaciones se acumulan. Una sola propiedad puede incluir varios atributos y todos deben cumplirse. El orden no importa para la evaluación, pero manténgalos legibles.

public class SignupRequest
{
    [Required]
    [EmailAddress]
    [StringLength(254)]
    public string Email { get; set; }

    [Required]
    [Range(18, 120, ErrorMessage = "Must be 18 or older.")]
    public int Age { get; set; }
}

Cuándo se quedan cortas las anotaciones de datos

Las anotaciones de datos son excelentes para reglas declarativas sencillas. Sin embargo, la lógica entre propiedades, las consultas a la base de datos o las reglas condicionales ("obligatorio solo cuando X") pronto se vuelven difíciles de manejar. Ahí es donde destaca FluentValidation, que veremos a continuación.

Comprobación rápida

Compruebe su comprensión de las anotaciones de datos.

Resumen

Ha aprendido que las anotaciones de datos declaran reglas de validación como atributos: [Required] para indicar que un valor es obligatorio, [Range] para establecer límites numéricos, [EmailAddress] para el formato de correo electrónico, además de [StringLength], [RegularExpression] y [Compare]. Con [ApiController], los errores devuelven automáticamente un 400 mediante ModelState. Para reglas complejas, utilice FluentValidation a continuación.

Preguntas frecuentes

¿La lección «Validación con Data Annotations» es gratis?

Sí — el texto completo de «Validación con Data Annotations» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Validación con Data Annotations»?

Valide modelos con atributos. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Validación con Data Annotations»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Validación con Data Annotations
  2. Reglas de FluentValidation
  3. Reglas personalizadas y condicionales
  4. Integración de la validación con las API
← Volver a C# Academy