.net core返回null而不是[]

it2025-08-08  12

这个问题是这样的:不知道从哪个版本开始,在api返回结果时,如果我返回类型是IEnumberable<T>,如果没有查询到相关结果,那么返回值就是null,并且响应的是204 NoContent,这样的话,前端就要求我必须返回[],我能怎么办呢?人肉手动判断一下… 是的,我在上个项目中就是这么做的… 如果不人肉的话,应该怎么做呢?那就用过滤器吧。 先上代码:

public class EmptyListActionFilter: ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext context) { if (!(context.Result is ObjectResult)) return; var objectResult = context.Result as ObjectResult; if (objectResult.Value == null) { context.Result = new OkObjectResult(Enumerable.Empty<string>()); } } }

至于为什么要是Enumerable.Empty<string>()的string类型呢,没关系,我是随便设的,就想返回一个empty的数组就行了,然后把此过滤器放在调用的控制器函数上就可以啦

最新回复(0)