23

如何实现以下功能?

我的控制器

if (something == null)
{         
     //return the view with 404 http header
     return View();          
}

  //return the view with 200 http header
  return View();
4

6 回答 6

38

写吧

Response.StatusCode = 404;

在返回视图之前。

于 2012-12-07T14:18:25.950 回答
15
if (something == null)
{         
   return new HttpNotFoundResult(); // 404
}
else
{
   return new HttpStatusCodeResult(HttpStatusCode.OK); // 200
}
于 2012-12-07T14:10:50.523 回答
10
if (something == null)
{         
    Response.StatusCode = (int)HttpStatusCode.NotFound;
    return View();          
}

//return the view with 200 http header
return View();
于 2012-12-07T14:41:52.503 回答
9

你应该设置asTrySkipIisCustomErrors的属性。Responsetrue

public ActionResult NotFound()
{
    Response.StatusCode = 404;
    Response.TrySkipIisCustomErrors = true;
    return View();
}
于 2016-02-03T23:09:56.827 回答
2
if (something == null)
{         
   return HttpNotFound();
}

return View();
于 2012-12-07T14:10:44.683 回答
1

我会抛出一个 404 异常并创建一个自定义异常过滤器,该过滤器会为 404 错误返回一个未找到的页面。内置HandleError过滤器不处理 404 错误。

if (something == null)
{         
   throw new HttpException(404, "Not found")
}

return View();
于 2012-12-07T15:04:14.037 回答