【问题标题】:How should I return 404 from a JsonResult Controller?我应该如何从 JsonResult 控制器返回 404?
【发布时间】:2015-07-19 19:37:40
【问题描述】:

在 ASP.NET MVC5 中,我有一个返回类型为 JsonResult 的控制器。

根据参数,我想返回 404,因为这是对用户请求不存在数据的描述。

我可以throw new HttpException(404, "message"),但考虑到return HttpNotFound() 语法,这感觉很脏。这当然行不通,因为HttpNotFoundResult 不继承JsonResult

我应该如何从 JsonResult 控制器方法中干净地返回 404?

【问题讨论】:

    标签: asp.net-mvc-5 jsonresult


    【解决方案1】:

    您的所有操作都应该有 ActionResult 返回值。这允许您返回任何有效的结果类型,无论是 JsonResult 还是 HttpNotFoundResult

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

    【讨论】:

    • 我会小心地说他们“应该”,因为这实际上是样式和必要性的问题。争论所有动作都应该返回 ActionResult 就像争论所有方法都应该返回 object
    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2016-01-30
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多