这是由于ASP.NET Core 3.1 Web API默认不会为字符串和其他“可空”类型(如int?或DateTime?)提供验证消息。要解决此问题,可以在属性上应用RequiredAttribute,并在启用ModelState验证时包括ValidationProblemDetails。
以下是一个示例:
public class MyModel
{
[Required(ErrorMessage = "MyStringField is required")]
public string MyStringField { get; set; }
public int? MyIntField { get; set; }
}
[HttpPost]
public ActionResult Post([FromBody] MyModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(new ValidationProblemDetails(ModelState));
}
// Do something with valid model
return Ok();
}
在上面的示例中,我们为MyStringField添加了一个RequiredAttribute,如果MyStringField为null,则会使用提供的自定义错误消息。在控制器中,我们检查ModelState.IsValid属性。如果模型无效,则返回BadRequest并使用ValidationProblemDetails将验证错误详细信息传递给客户端。 如果模型有效,则可以执行任何其他所需的操作。