我应该如何从JsonResult控制器返回404?

Mat*_*hew 8 jsonresult asp.net-mvc-5

在ASP.NET MVC5中,我有一个带JsonResult返回类型的控制器.

根据我想要返回404的参数,因为这描述了请求不存在的数据的用户.

我可以,throw new HttpException(404, "message")但鉴于return HttpNotFound()语法,这感觉很脏.当然,这HttpNotFoundResult不起作用,因为不继承JsonResult

我应该如何从JsonResult控制器方法中干净地返回404 ?

Chr*_*att 15

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

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

    return Json(foos, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

  • 我会小心地说他们"应该",因为这真的是造型和必要性的问题.争论所有动作应该返回ActionResult就像争论所有方法应该返回`object`. (8认同)