Matthew
Matthew

Reputation: 10444

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?

Upvotes: 12

Views: 7611

Answers (1)

Chris Pratt
Chris Pratt

Reputation: 239290

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);
}

Upvotes: 17

Related Questions