Validações no C#/ASP NET
Bom dia pessoas, tudo bem? Espero que sim. Estou trabalhando em APIs com C# mais especificamente asp net 4.7, e eu gostaria de saber se preciso ou como fazer algumas validações dentro da minha controller, por exemplo: A Model de usuario tem nome, email, e cpf.
Nesse caso pra mim existem alguns problemas como: Cpf pode estar null ou com uma string com espaço (" ") então o certo é fazer 2 validações para o CPF? ou o Asp net valida pra mim caso o valor não seja númerico.
Então pensando nisso, eu preciso fazer 3 ifs cada um verificando se os atributos estão preenchidos ou o asp net faz isso pra mim?
Isso tudo que perguntei depende de versão? Porque eu lembro de ter feito uma API em asp net core e ter esse tipo de validação, mas gostaria de uma certeza sobre esse assunto. Perdoem caso tenho feito a pergunta mal feita ou que ela tenha ficada confusa, não sou muito com Fóruns.
Obrigado pela atenção!
OBS: Não coloquei aqui que o CPF tem que ser válido porque isso seria uma validação que eu já sei que preciso fazer.
Segue um exemplo de código:
[HttpPost]
[Route("gravar")]
public async Task<IHttpActionResult> GravarTerceiroAutorizado(Usuario model)
{
if (model.CPF != null)
{
return BadRequest("O CPF fornecido é inválido.");
}
try
{
var retorno = await _usuarioService.GravarUsuario(model);
if(retorno == "Gravou")
return Ok(new { message = "Usuario cadastrado com sucesso." });
else
return Ok(new { message = "Autorização do terceiro editada com sucesso." });
}
catch (Exception ex)
{
return BadRequest($"Desculpe, ocorreu um erro ao processar sua solicitação: {ex.Message}");
}
}
Valida em uma só verificação, usando
if (string.IsNullOrEmpty(model.CPF.ToString().Trim())) { return BadRequest("O CPF fornecido é inválido."); }
Olá VitorPhantomhive
Existem algumas maneira, uma delas é utilizar os DataAnnotations ex:
public class Usuario
{
public string Nome { get; set; }
public string Email { get; set; }
[Required(ErrorMessage = "CPF é obrigatorio")]
[StringLength(11, MinimumLength = 11, ErrorMessage = "Cpf deve conter 11 caracteres")]
public string Cpf { get; set; }
}
[HttpPost]
public IActionResult Post(Usuario usuario)
{
// o aspnet estará validando automaticamente para você e entregando o resultado no ModelState
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok(usuario);
}
Outra maneira bastante usada é com FluentValidation