[QuickTip] - Validando ModelState globalmente

[QuickTip] - Validando ModelState globalmente

Olá pessoALL,

Estou escrevendo um posto sobre como podemos usar filtros nos controllers para reduzir o código que escrevemos, especialmente para regra de negócios, e antes gostaria que compartilhar uma dica rápida para reduzir o código dos nossos controllers.

Normalmente nossos controllers possuem um código +/- assim:

if (!ModelState.IsValid)
{
    return BadRequest(ModelState);
}

E repetimos isso por todos os controllers, mas podemos fazer isso globalmente para todas as nossas actions, utilizando um Action Filter.

public class ValidateModelAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (!context.ModelState.IsValid)
        {
            context.Result = new BadRequestObjectResult(context.ModelState);
            return;
        }
    }
}

Para utilizar o filtro adicione o código a seguir no método ConfigureServices da classe Startup.cs.

services.AddMvc(opts =>
{
    opts.Filters.Add(typeof(ValidateModelAttribute));
});

Pronto! Agora todas as nossas Actions irão validar o ModelState automaticamente.

[]s e até a próxima.