в моем контроллере я пытаюсь проверить, передается ли значение datetime в запросе пут, но когда я не отправляю значение для этого поля datetime, оно сбрасывает значение в базе данных на 01/01 /0001 / вот код в моем контроллере, как я проверяю, пусто оно или нет. (Немного) (Проверьте user.Age!)
[HttpPut("User/Edit/{userid}")]
public IActionResult Update(string token, int userid, [FromBody]User user)
{
bool RoleId = JWTValidator.RoleIDTokenValidation(token);
var edit = _context.users.Find(userid);
if (RoleId)
{
if (user.Name != null)
{
edit.Name = user.Name;
}
else
{
edit.Name = edit.Name;
}
if (user.LastName != null)
{
edit.LastName = user.LastName;
}
else
{
edit.LastName = edit.LastName;
}
if (user.Age != null)
{
edit.Age = user.Age;
}
else
{
edit.Age = edit.Age;
}
, поэтому, если значение равно нулю, оно выиграет 'я не могу ничего обновить, но я думаю, что если вы ничего не введете, он увидит это как 01/01/0001, поэтому я попытался сравнить его следующим образом
if(user.Age == "01/01/0001")
, но я не могу сравнить тип datetime со строкой,а также я использую валидацию, подобную этой
if (ModelState.IsValid)
{
_context.users.Update(edit);
_context.SaveChanges();
}
else
{
return BadRequest(ModelState);
}
, и моя модель для Age
[Display(Name = "Your Birthday")]
[DataType(DataType.Date, ErrorMessage = "Not a correct date format, MM/DD/YYYY please.")]
public DateTime Age { get; set; }
, но если я отправлю запрос на поставку с содержанием "Age": "test" itпросто дает мне внутреннюю ошибку 500 вместо сообщения об ошибке, я справляюсь с этим неправильно?
Надеюсь, кто-нибудь может мне помочь.