This article has been localized into Spanish by the community.
Tipos de DataAnnotations para validación de modelo
En el último artículo, introdujimos la validación del modelo y te mostramos cuán fácil es empezar con esto. Usamos un par de DataAnnotations relacionadas con validación, cómo [Required] y [StringLength], pero como mencionamos, hay muchos otros tipos. En este artículo, iremos a través de todos ellos para darte una mejor idea de todas las posibilidades.
[Required]
Específica que un valor necesita ser proveído para esta propiedad. Tú debes estar atento que los tipos de valor no nulos (por ejemplo enteros y DateTimes) son siempre requeridos y por lo tanto no necesitas agregar el atributo [Required] para ellos. Para cadenas deberías tener en mente que un valor vacío será tratado como un valor nulo y por lo tanto resultar en un error de validación. Este comportamiento puede ser cambiado usando la propiedad AllowEmptyStrings:
[Required(AllowEmptyStrings = true)]
[StringLength]
Te permite especificar al menos un monto mínimo de caracteres(el primero, parámetro opcional) para una cadena, con la posibilidad adicional de especificar un monto mínimo también. Aquí hay un ejemplo:
[StringLength(50, MinimumLength = 3)]
En este caso, el valor no puede ser válido si tiene menos de 3 caracteres o más de 50 caracteres de largo.
[Range]
Con el atributo [Range], puedes especificar un mínimo y un máximo valor para una propiedad numérica (int, float, double etc.). Ambos mínimo y máximo son requeridos cuando usas este atributo - como esto:
[Range(1, 100)]
Ahora tu valor numérico debe de estar entre 1 y 100.
[Compare]
El atributo [Compare] te permite establecer una comparación entre la propiedad en cuestión y otra propiedad, requiriendoles ser iguales. Un caso de uso común para esto podría ser asegurarse que el usuario ingrese los mismos valores en los campos de "Email" y "EmailRepeated":
[Compare("MailAddressRepeated")]
public string MailAddress { get; set; }
public string MailAddressRepeated { get; set; }
Tipos específicos
Si tu cadena falla en caer en una categoría en específico, por ejemplo número telefónico, ASP.NET MVC puedes cumplirte con validación básica out of the box. Aquí hay una lista de tipos que tú puedes especificar:
- [CreditCard]: Válida que la propiedad tenga un formato de tarjeta de crédito
- [EmailAddress]: Válida que la propiedad tenga el formato de un correo electrónico
- [Phone]: Valida que la propiedad tenga un formato numérico de teléfono.
- [Url]: Válida que la propiedad tenga un formato de url.
Estos tipos mencionados, tienen en común que proveen un validación muy básica. Por ejemplo, la validación de correo electrónico solamente se asegurará de que hayas ingresado un valor que contenga algunas de las características de una dirección de correo electrónico, como contener un caracter arroba @ y así, pero aún es posible ingresar algo que no se identifique con una dirección de correo electrónico. Para más exactitud y/o flexibilidad, usa el atributo [RegularExpression], o implementa uno propio, con lógica personalizada, como se describe en uno de los siguientes artículos:
[RegularExpression]
Cuando Ninguno de los otros tipos de validación son lo suficientemente flexibles, el último recurso puede ser el atributo [RegularExpression]. Éste, te permite especificar una expresión regular contra la cual será validado el valor de tu propiedad, solamente será válido si hay una coincidencia. Las expresiones regulares son un tema muy grande para manejarlo en este artículo, pero permítime demostrarte cuan poderosas son de todas formas. Imagina que tu clase WebUser tiene un MemberId el cual tiene que tener este formato en específico:
xx-0000-0000
En otras palabras: 2 letras, un guión y luego dos grupos de cuatro números con un guión en medio, como zx-1234-5678. Podemos hacer una expresión regular para Sólo eso y ponerla dentro de nuestro atributo [RegularExpression] :
[RegularExpression("[a-z]{2}-[0-9]{4}-[0-9]{4}")]
public string MemberId { get; set; }
Las posibilidades con expresiones regulares son casi sin fin, y pueden ser usadas en muchas otras situaciones más que sólo validación, así que aprender a Cómo usar las puede ser una gran inversión. Aquí hay un par de enlaces si tú quieres empezar a aprender expresiones regulares: Regex Tutorial & Cheat sheet / Regex Interactive Tutorial.
Resumen
Con un amplio Rango de posibilidades de validación ya construidas en el framework ASP.NET MVC, puedes fácilmente tener la mayoría de sus propiedades validadas agregando un simple atributo a ellas. Sí tú necesitas más flexibilidad, siempre puedes usar el atributo [RegularExpression] o una implementación personalizada de lógica de validación, cómo lo discutiremos en uno de nuestros siguientes artículos.