2016-08-17 3 views
0
public class BookController : Controller 
{ 
    public ActionResult Show(int bid) 
    { 
    return View(); 
    } 
} 
routes.MapRoute(
       name: "Show", 
       url: "Book/{bid}/", 
       defaults: new {controller = "Book", action = "Show"}, 
       constraints: new {bid = @"\d+"} 
       ); 

방문라우터가 일치하지 않으면 404를 반환하는 방법?

/책/테스트/

가 500 오류를 반환합니다, 어떻게 404 오류를 반환하는 경우?

라우터가 일치하지 않으면 404를 반환하는 방법?

+1

여기를 클릭하십시오. http://stackoverflow.com/questions/553922/custom-asp-net-mvc-404-error-page –

답변

0

대신 web.config에 customErrors 요소를 추가하여 특정 상태 코드가 발생할 때 사용자를 특정 URL로 리디렉션하는 실제보기를 표시 할 수 있습니다.이 상태 코드는 임의의 URL과 마찬가지로 처리 할 수 ​​있습니다 . 아래는 워크 플로우입니다.

해당되는 경우 먼저 HttpException을 던집니다. 예외를 인스턴스화 할 때는 다음과 같이 http 상태 코드를 매개 변수로 사용하는 오버로드 중 하나를 사용해야합니다.

throw new HttpException(404, "NotFound"); 

그런 다음 위 예외가 발생할 때 렌더링 할 뷰를 결정할 수 있도록 web.config 파일에 사용자 지정 오류 처리기를 추가하십시오. 여기에 아래의 예는 다음과 같습니다

<configuration> 
    <system.web> 
     <customErrors mode="On"> 
      <error statusCode="404" redirect="~/404"/> 
     </customErrors> 
    </system.web> 
</configuration> 

지금 URL을 처리 할 수 ​​있습니다 당신의 Global.asax에서 경로 항목을 추가하려면 404 페이지의보기가 표시됩니다 컨트롤러의 동작에 요청을 전달합니다 "404" .

Global.asax에

routes.MapRoute(
    "404", 
    "404", 
    new { controller = "Commons", action = "HttpStatus404" } 
); 

CommonsController 모든 즉 남아

public ActionResult HttpStatus404() 
{ 
    return View(); 
} 

는 위의 작업에 대한 뷰를 추가하는 것입니다.