[asp.net-mvc] 404를 반환하기 위해 MVC 작업을 얻는 방법

일부 데이터를 검색하는 데 사용되는 문자열을 취하는 작업이 있습니다. 이 문자열로 인해 데이터가 반환되지 않으면 (아마 삭제 되었기 때문에) 404를 반환하고 오류 페이지를 표시하고 싶습니다.

나는 현재 항목을 찾을 수 없다는이 작업에 대한 친절한 오류 메시지를 표시하는 특수보기를 반환합니다. 이것은 잘 작동하지만 이상적으로는 404 상태 코드를 반환하여 검색 엔진이이 콘텐츠가 더 이상 존재하지 않음을 알고 검색 결과에서 제거 할 수 있도록하는 것이 이상적입니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

Response.StatusCode = 404를 설정하는 것만 큼 간단합니까?



답변

여러 가지 방법이 있습니다.

  1. 당신은 일반적인 aspx 코드에 맞습니다. 지정된 방식으로 할당 할 수 있습니다
  2. throw new HttpException(404, "Some description");

답변

ASP.NET MVC 3 이상 에서는 컨트롤러에서 HttpNotFoundResult 를 반환 할 수 있습니다 .

return new HttpNotFoundResult("optional description");


답변

MVC 4 이상에서는 내장 HttpNotFound헬퍼 메소드를 사용할 수 있습니다 .

if (notWhatIExpected)
{
    return HttpNotFound();
}

또는

if (notWhatIExpected)
{
    return HttpNotFound("I did not find message goes here");
}


답변

코드 :

if (id == null)
{
  throw new HttpException(404, "Your error message");//RedirectTo NoFoundPage
}

Web.config

<customErrors mode="On">
  <error statusCode="404" redirect="/Home/NotFound" />
</customErrors>


답변

나는 이것을 사용했다 :

Response.StatusCode = 404;
return null;


답변

.NET Core로 작업하는 경우 다음을 수행 할 수 있습니다. return NotFound()


답변

NerdDinner에서 예를 들어. 시도

public ActionResult Details(int? id) {
    if (id == null) {
        return new FileNotFoundResult { Message = "No Dinner found due to invalid dinner id" };
    }
    ...
}