Para verificar o motivo que o ModelState.IsValid fica com valor false
é só inserir o código a conforme abaixo.
var errors = ModelState
.Where(x => x.Value.Errors.Count > 0)
.Select(x => new { x.Key, x.Value.Errors })
.ToArray();
Resultado: