当我以正常的形式使用流利验证时,我有一个响应,但是当我尝试使用它时,我有另一个响应,如何手动获得相同的响应?
正常响应
{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-dc7d6c683021ab4e8b3e2db42748e569-ec9d9967213d614c-00",
    "errors": {
        "LicensePlate": [
            "'License Plate' não pode ser nulo."
        ]
    }
}手册
public ActionResult<ResponseUpdateLeadVehicleDTO> ChangeLeadPlate1(int id, [CustomizeValidator(Skip = true)]RequestUpdateLeadVehicleDTO request)
{    
  if (!validation.IsValid)
  {
    validation.AddToModelState(ModelState, null);
    return BadRequest(ModelState);
  }
}响应
{
    "LicensePlate": [
        "'License Plate' não pode ser nulo."
    ]
}发布于 2021-08-20 11:33:12
在贴出问题后马上找到了答案。感谢在asp.net内核3.1中向模型状态添加错误并返回坏请求的凯文·史密斯
我们需要将ApiBehaviorOptions注入到我们的操作中,这些选项用于描述api应该如何行为。其中一个选项是在模型状态无效时从api创建响应的工厂,这称为InvalidModelStateResponseFactory.。我们可以用ControllerContext调用这个工厂,这将给我们返回一个IActionResult,在这个IActionResult中我们可以返回操作。
public IActionResult ChangeLeadPlate1(int id,
  [CustomizeValidator(Skip = true)] RequestUpdateLeadVehicleDTO request,
  [FromServices] IOptions<ApiBehaviorOptions> apiBehaviorOptions)
{   
  if (!ModelState.IsValid)
    return apiBehaviorOptions.Value.InvalidModelStateResponseFactory(ControllerContext);
}https://stackoverflow.com/questions/68848147
复制相似问题