VALIDANDO MODELOS
MVC

Validación de Modelos

La validación de los datos introducidos por los usuarios y reforzar las reglas de negocio es un requisito principal en la mayoría de aplicaciones web.

la validación lógica esté siempre en el servidor, y
opcionalmente podamos forzar esas validaciones en el cliente a través de JavaScript.

Los programadores

aprovechar el soporte de validación
DataAnnotation

ofrecen una
forma realmente sencilla de añadir declarativamente reglas de negocio
a objetos y propiedades con un mínimo código.

Las características de
validación de ASP.NET MVC

están diseñadas para que sea sencillo
integrar cualquier tipo de arquitectura de validación

aprovechando la infraestructura de validación de ASP.NET MVC

(incluyendo validación en cliente, validación de enlace de modelos, etc).

Server side (model) validation

Se requieren validaciones del lado del servidor para garantizar que los datos recibidos sean correctos y válidos

se usan atributos conocidos
como anotaciones de datos.

System.ComponentModel.DataAnnotations.

Anotaciones de validación

Tenemos a:

Required

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

RegularExpression

Range

r

public class Usuario { @Size(min = 3, max = 20) private String nombre; @NotBlank private String apellido; @Email @NotBlank private String correo; @Pattern(regexp = "^[a-zA-Z]\\w{3,14}$") private String password; @Min(18) @NotNull private Integer edad; @NotNull private Boolean sexo; // getter, setter, ...}

@Size(min=3, max=20): Indica la longitud mínima y máxima que debe tener el texto nombre.
@NotBlank: Impide que un campo de texto esté vacío.
@Email: Verifica que la dirección de correo electrónico tenga el formato correcto.
@Pattern(regexp="..."): El texto debe cumplir con la expresión regular indicada, en nuestro ejemplo la expresión regular establece que la contraseña debe contener letras y números.
@NotNull: Este campo no puede ser nulo.
@Min(18): El valor mínimo es 18.

Compare

r

clase pública CreateAccountForm: IValidatableObject { [Obligatorio] cadena pública Nombre { get; establecer; } [Obligatorio] [Dirección de correo electrónico] public string Correo electrónico { get; establecer; } [Obligatorio] [MinLength(8)] public string Contraseña { get; establecer; } [Obligatorio] [Comparar(nombrede(Contraseña))] public string Contraseña2 { get; establecer; } public bool AgreeWithConditions { get; establecer; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (!De acuerdo con las condiciones) { yield return new ValidationResult( "Debe estar de acuerdo con los términos y condiciones.", new[] { nameof(AgreeWithConditions) } ); } } }

CreditCard

r

var owner = $('#owner'), cardNumber = $('#cardNumber'), cardNumberField = $('#card-number-field'), CVV = $("#cvv"), mastercard = $("#mastercard"), confirmButton = $('#confirm-purchase'), visa = $("#visa"), amex = $("#amex"); ardNumber.keyup(function() { amex.removeClass('transparent'); visa.removeClass('transparent'); mastercard.removeClass('transparent'); if ($.payform.validateCardNumber(cardNumber.val()) == false) { cardNumberField.removeClass('has-success'); cardNumberField.addClass('has-error'); } else { cardNumberField.removeClass('has-error'); cardNumberField.addClass('has-success'); } if ($.payform.parseCardType(cardNumber.val()) == 'visa') { mastercard.addClass('transparent'); amex.addClass('transparent'); } else if ($.payform.parseCardType(cardNumber.val()) == 'amex') { mastercard.addClass('transparent'); visa.addClass('transparent'); } else if ($.payform.parseCardType(cardNumber.val()) == 'mastercard') { amex.addClass('transparent'); visa.addClass('transparent'); } }); confirmButton.click(function(e) { e.preventDefault(); var isCardValid = $.payform.validateCardNumber(cardNumber.val()); var isCvvValid = $.payform.validateCardCVC(CVV.val()); if(owner.val().length < 5){ alert("Wrong owner name"); } else if (!isCardValid) { alert("Wrong card number"); } else if (!isCvvValid) { alert("Wrong CVV"); } else { // Everything is correct. Add your form submission code here. alert("Everything is correct"); } });

Phone

podemos validar, establecer mensaje de error, establecer
etiqueta de visualización, tipo de campo, etc. para una propiedad particular.