c# - 如何检查放置请求中的日期时间值是否为空
问题描述
在我的控制器中,我正在尝试检查放置请求中是否传递了日期时间值,但是当我不发送该日期时间字段的值时,它会将数据库中的值重置为 01/01/0001/ 这里是我控制器中的代码,我如何检查它是否为空。(一点点)(检查用户年龄!)
[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")
但我无法将日期时间类型与字符串进行比较。而且我正在使用这样的验证
if (ModelState.IsValid)
{
_context.users.Update(edit);
_context.SaveChanges();
}
else
{
return BadRequest(ModelState);
}
我的年龄模型是
[Display(Name = "Your Birthday")]
[DataType(DataType.Date, ErrorMessage = "Not a correct date format, MM/DD/YYYY please.")]
public DateTime Age { get; set; }
但是如果我发送一个内容为“Age”的put请求:“test”它只会给我一个500内部错误而不是给我错误消息,我处理错了吗?
希望任何人都可以帮助我。
解决方案
您还可以将年龄声明为可为空,即:
DateTime? user.Age = new DateTime();
然后,您可以轻松地检查 null 也可以像这样简单地设置 edit.Age (如果您想要默认值):
edit.Age = user.Age ?? new DateTime(1970,01,01);
问候。
推荐阅读
- ios - 为什么我在 for() 行上出现 EXC_CRASH (SIGABRT) 错误
- php - 如何使用安装在 mcrypt_decrypt() 的 openssl_decrypt()
- java - Spring Boot Error getOutputStream() has already been called for this response after forward
- php - Doctrine Join - 没有关联命名
- postgresql - JSON类型的char_length替代品?
- visual-studio - 在没有 VS2017 警告的情况下在 QtC 中使用 clang 注释
- actionscript-3 - 我可以通过 Worker 关闭 AIR 应用程序吗?
- python - 为什么我在 python 中的字典总是有序的?
- ios - xcodebuid:有没有办法通过代码签名证书而不将其放入钥匙串中?
- c# - 使用 OOXML 对于一个段落,我想将行距值设置为单个