es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Backend de .NET Core, modelo con Required nullable siendo creado desde Postman sin enviar los datos requeridos.

Tengo un modelo con la siguiente propiedad:

[Required]
public DateTime? CreatedDate { get; set; }

Esto es obligatorio y nullable, que es exactamente lo que quiero, tratando de evitar fechas vacías o predeterminadas, forzando al usuario o al frontend a enviar una fecha.

Mi Dto no tiene anotaciones y la propiedad no es nullable:

public DateTime CreatedDate { get; set; }

Controlador:

public async Task<iactionresult> Create([FromBody] InputDto input)
{
    var creatInputId = await inputService.AddAsync(input);
    return Ok(creatInputId);
}

El servicio mapea el Dto al modelo usando Automapper:

var input = _mapper.Map<inputmodel>(inputDto);

Cuando pruebo este controlador desde Postman, la base de datos se actualiza si proporciono una CreatedDate o no, desde el frontend no. Al usar Postman, la CreatedDate en la base de datos se establece en 01-01-0001.

¿Debería usar dataannotations en mi Dto también? Quiero evitar fechas predeterminadas/prohibir guardar la entrada a menos que se proporcione una fecha no predeterminada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, debes usar anotaciones de datos en tu Dto también para asegurar que el usuario/frontend envíe una fecha válida. Una opción es agregar el atributo [Required] a la propiedad CreatedDate en tu Dto para asegurarte de que no se omita. Además, puedes agregar el atributo [Range] para restringir el rango de fechas permitidas y evitar valores predeterminados. Por ejemplo:

    C#
    [Required]
    [Range(typeof(DateTime), "1/1/1900", "1/1/2100",
    ErrorMessage = "Rango de fecha no válido.")]
    public DateTime CreatedDate { get; set; }

    Esta configuración asegurará que la propiedad CreatedDate en tu Dto sea requerida y solo aceptará fechas dentro del rango especificado. Si se proporciona una fecha inválida o predeterminada, la validación automática fallará y la operación no se guardará en la base de datos.

Comments are closed.