ASP .NET
Core 3.1 - Validação Customizada do Model
![]() |
Hoje vamos recordar como realizar a validação customizada do modelo na ASP .NET Core. |
A forma mais simples de realizar a validação do modelo é usar os atributos de validação da Data Annotations definida no namespace System.ComponentModel.DataAnnotations.
Acontece que se tivermos um requisito de validação complexo que não possa ser implementado usando os atributos internos, podemos criar um atributo de validação personalizado e reutilizá-lo em nosso projeto ou mesmo em vários projetos.
Para isso podemos
criar atributos de validação personalizados, e, fazemos isso criando uma classe
que herda da classe ValidationAttribute e a seguir
substituímos o método IsValid.
O método IsValid aceita um objeto chamado
value,
que é a entrada a ser validada. Uma sobrecarga também aceita um objeto
ValidationContext, que fornece informações
adicionais, como a instância do modelo criada pelo model binding.
A classe ValidationAttribute é a classe base para todos os atributos de validação e possui os seguintes métodos:
Métodos
|
Descrição |
GetValidationResult(Object,
ValidationContext)
|
Verifica se o valor
especificado é válido com relação ao atributo de validação
atual.
|
IsDefaultAttribute()
|
Quando substituído em uma
classe derivada, indica se o valor dessa instância é o valor
padrão para a classe derivada. Herdado de Attribute.
|
IsValid(Object)
|
Determina se o valor
especificado do objeto é válido
|
IsValid(Object,
ValidationContext)
|
Valida o valor especificado
com relação ao atributo de validação atual.
|
MemberwiseClone()
|
Cria uma cópia superficial
do objeto atual. É herdado do objeto
|
ToString()
|
Retorna uma sequência que
representa o objeto atual. É herdado do objeto
|
Validate(Object, String)
|
Valida o objeto
especificado.
|
Validate(Object,
ValidationContext)
|
Valida o objeto
especificado
|
Para mostrar como utilizar este recurso vamos criar uma aplicação ASP .NET Core MVC 3.1 usando o EF Core 3.1 onde vamos fazer um CRUD básico em informações de funcionários.
Veja como foi criada esta aplicação acessando este link : ASP .NET Core MVC - Funcionarios
Você pode baixar o projeto, descompactar e abrir no VIsual Studio 2019 para continuar acompanhando o artigo.
Agora com base nesta aplicação quando vamos criar um novo funcionário temos a seguinte página sendo exibida:
Vamos supor que precisamos permitir somente os emails com domínio yahoo.com sejam permitidos.
Se outro nome de domínio for usado vamos exibir uma mensagem de erro de validação.
Então vamos implementar uma validação customizada com base neste requisito criando um atributo de validação personalizado.
Para isso vamos criar uma classe chamada ValidaDominoEmailAttribute que herda da classe ValidationAttribute e vamos sobrescrever o método IsValid() :
Crie a pasta Validacao no projeto e a seguir crie a clases ValidaDominioEmailAttribute com o código abaixo:
using System.ComponentModel.DataAnnotations;
namespace FuncionariosWeb.Validacao
{
public class ValidaDominioEmailAttribute : ValidationAttribute
{
private readonly string dominioPermitido;
public ValidaDominioEmailAttribute(string dominioPermitido)
{
this.dominioPermitido = dominioPermitido;
}
public override bool IsValid(object value)
{
string[] strings = value.ToString().Split('@');
return strings[1].ToUpper() == dominioPermitido.ToUpper();
}
}
}
|
A seguir temos que complementar na classe Funcionario do modelo a inclusão do atributo ValidaDominoEmail, definido acima:
public class
Funcionario { .... [RegularExpression(@"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$", ErrorMessage = "Email com formato inválido")] [Required(ErrorMessage = "O Email é obrigatório")] [ValidaDominioEmail(dominioPermitido: "yahoo.com", ErrorMessage = "O domínio do email deve ser yahoo.com")] public string Email { get; set; } ... } |
Entendendo o que foi feito:
Agora é só alegria...
Executando o projeto e fazendo a validação do email quando da criação de um novo funcionário teremos o seguinte resultado:
Simples assim...
Pegue o projeto
aqui :
IdentityTotal_Validacao.zip (sem as referências)
"Dando graças
ao Pai que nos fez idôneos para participar da herança dos santos na luz;
O qual nos tirou da potestade das trevas, e nos transportou para o reino do
Filho do seu amor;"
Colossenses 1:12,13
Referências:
ASP .NET Core - Implementando a segurança com ..
ASP.NET Core MVC - Criando um Dashboard ..
C# - Gerando QRCode - Macoratti
ASP .NET Core 2 - MiniCurso Básico -
ASP .NET Core - Implementando a segurança ... -
Curso ASP .NET Core - Macoratti.net
ASP .NET Core - Implementando a segurança com .
ASP.NET Core MVC - Criando um Dashboard .
ASP .NET - Gerando QRCode com a API do Google