Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How should I return 404 from a JsonResult Controller?

In ASP.NET MVC5 I have a controller with a JsonResult return type.

Depending on parameters I want to return a 404, as this is descriptive of the user requesting non-existent data.

I could throw new HttpException(404, "message") but this feels dirty given the return HttpNotFound() syntax. This doesn't work, of course, because HttpNotFoundResult does not inherit JsonResult

How should I cleanly return 404's from JsonResult controller methods?

like image 991
Matthew Avatar asked May 08 '15 19:05

Matthew


1 Answers

All your actions should simply have ActionResult return values. This allows you to return any valid result type, whether that's a JsonResult or HttpNotFoundResult.

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

    return Json(foos, JsonRequestBehavior.AllowGet);
}
like image 86
Chris Pratt Avatar answered Nov 10 '22 10:11

Chris Pratt