我使用的是ASP.NET Core2.0,我有一个像这样注释的请求对象:
public class MyRequest
{
[Required]
public Guid Id { get; set; }
[Required]
public DateTime EndDateTimeUtc { get; set; }
[Required]
public DateTime StartDateTimeUtc { get; set; }
}
在我的控制器中:
public async Task<IActionResult> HandleRequest([FromBody] MyRequest request)
{ /* ... */ }
null
但当我有这样的身体:
{
"hello": "a-string-value!"
}
null
当然,当我缺少所有
因此,在某种程度上,如果我的请求中没有任何内容,这些
在准备这个问题时,我注意到还有一个
那么,
null
public class MyRequest
{
[Required]
public Guid? Id { get; set; }
[Required]
public DateTime? EndDateTimeUtc { get; set; }
[Required]
public DateTime? StartDateTimeUtc { get; set; }
}
现在,如果您发送的请求缺少
您应该首选
当您使用
null
null
是的,困难在于,如果您选择Required,web请求的客户端的语义会发生错误的变化--也就是说,当您真正需要一个正确的值时,您说您可以传入一个null。
使用JsonRequired对此进行排序,但这是由NewtonSoft提供的,因此当您升级到。NET Core3时将停止工作。这是因为。NET Core3使用自己的Json解析器而不是NewtonSoft。