我应该如何 return 来自 JsonResult 控制器的 404?

How should I return 404 from a JsonResult Controller?

在 ASP.NET MVC5 中,我有一个 JsonResult return 类型的控制器。

根据参数,我想 return 一个 404,因为这是对用户请求不存在数据的描述。

我可以 throw new HttpException(404, "message") 但考虑到 return HttpNotFound() 语法,这感觉很脏。这当然不行,因为HttpNotFoundResult不继承JsonResult

我应该如何从 JsonResult 控制器方法中清除 return 404?

您的所有操作都应该只具有 ActionResult return 值。这允许您 return 任何有效的结果类型,无论是 JsonResult 还是 HttpNotFoundResult.

public ActionResult Foo()
{
    if (!foos.Any())
    {
        return new HttpNotFoundResult();
    }

    return Json(foos, JsonRequestBehavior.AllowGet);
}