2015-05-08 7 views
7

В ASP.NET MVC5 У меня есть контроллер с возвращаемым типом JsonResult.Как мне вернуть 404 из JsonResult Controller?

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

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

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

ответ

10

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

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

    return Json(foos, JsonRequestBehavior.AllowGet); 
} 
+5

Я был бы осторожен, говоря, что они «должны», потому что это действительно вопрос стиля и необходимости. Рассуждая все действия, следует возвращать ActionResult, как будто утверждать, что все методы должны возвращать 'object'. – Shoe

Смежные вопросы