Как вернуть 404 с контроллера JsonResult?

In ASP.NET MVC5 у меня есть контроллер с JsonResult тип возвращаемого значения.

в зависимости от параметров я хочу вернуть 404, так как это описывает пользователя, запрашивающего несуществующие данные.

Я могу throw new HttpException(404, "message") но это кажется грязным, учитывая return HttpNotFound() синтаксис. Это не работает, конечно, потому что HttpNotFoundResult не наследует JsonResult

как я должен чисто вернуть 404 из JsonResult методы контроллера?

1 ответов


все ваши действия должны быть просто ActionResult возвращаемые значения. Это позволяет вернуть любой допустимый тип результата, будь то JsonResult или HttpNotFoundResult.

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

    return Json(foos, JsonRequestBehavior.AllowGet);
}