Asp.net web api .Net 5 webAPI:使用自定义ValidationAttribute时的奇怪行为
我们在控制器中有一个方法:Asp.net web api .Net 5 webAPI:使用自定义ValidationAttribute时的奇怪行为,asp.net-web-api,.net-5,Asp.net Web Api,.net 5,我们在控制器中有一个方法: [HttpDelete("deleteSelected")] [ProducesResponseType(StatusCodes.Status204NoContent)] public async Task<IActionResult> DeleteSelectedMessages( [FromQuery] [RequiredArrayShouldHaveItems] long[] selectedIds) {
[HttpDelete("deleteSelected")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
public async Task<IActionResult> DeleteSelectedMessages(
[FromQuery]
[RequiredArrayShouldHaveItems]
long[] selectedIds)
{
await _inputServicesService.DeleteSelectedMessagesAsync(selectedIds);
return NoContent();
}
我已经注释掉了validation.success行,因为我想讨论返回的对象
因为我使用selectedId调用该方法,如下所示:
https://localhost:5001/InputServices/deleteSelected/?selectedIds=-一,
那么答案是:
{
"errors": {
"selectedIds": [
"Should not be empty!"
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-9ac3f5511df2fb43bd3f222b63045633-1c68d7563cecc944-00"
}
{
"errors": {
"": [
"Should not be empty!"
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-c741cd30434292488074e58d0926a368-da7e2593f7e64d48-00"
}
但是如果我调用该方法时没有任何参数,例如:
https://localhost:5001/InputServices/deleteSelected/
那么答案是:
{
"errors": {
"selectedIds": [
"Should not be empty!"
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-9ac3f5511df2fb43bd3f222b63045633-1c68d7563cecc944-00"
}
{
"errors": {
"": [
"Should not be empty!"
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-c741cd30434292488074e58d0926a368-da7e2593f7e64d48-00"
}
为什么上一个示例中的propertyname为空?看起来自定义ValidationAttribute在参数上无法正常工作。如果你在一个对象的属性上使用它,一切都很好。