1
resposta

ModelState

Olá, Minha dúvida é referente a utilização do ModelState. Estou utilizando o Fluent Validation e registrando no ConfigureService da classe Startap.

Mesmo sem utilizar o ModelState.IsValid no meu controller para lançar um evento caso não seja valido ele já para a execução e envia a mensagem dos campos que estão inválidos segundo as regras de validação, ou seja nem chega ao controller. Isto é feito devido a ter configurado na Startap, como se fosse um middleware?

Se a request não chega até a controller porque utilizar ModelState? Em todos os exemplos que consegui achar é utilizado o ModelState, mas desta forma que eu fiz não precisou nem chamar o método Validate da AbstractValidator para testar a classe, simplesmente registrando a dependência e o serviço já funcionou, igual a um middleware nodeJS

Complementando a pergunta, é mais vantagem eu validar a ViewModel em vez da classe de domínio?

1 resposta

Fala, Murilo, tudo bem? São muitas perguntas, então vamos por partes.

se o ModelState for inválido nem chega no controller?

De fato em controladores de API (aqueles anotados com [ApiController]) o comportamento padrão é nem chamar o método se o ModelState for inválido. É possível desabilitar isso na classe Startup. Leia mais aqui.

...porque utilizar ModelState?

Se vc utilizar o comportamento padrão não precisa utilizar. Deixei o código justamente para mostrar essa questão.

...é mais vantagem validar ViewModel em vez da classe de domínio?

É importante validar nas duas classes. Objetos ViewModel nas actions e objetos de domínio nas camadas internas. Mas todos com suas validações específicas.

Espero que tenha ajudado!