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

В 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);
}
Другие вопросы по тегам