2011-01-11 3 views

답변

0

가장 쉬운 방법은 컨트롤러를 사용할 수있는 기본 경로를 사용하는 대신 컨트롤러가 하드 코드되고 URL 템플릿의 일부가되도록 경로를 업데이트하는 것입니다.

404가 아닌 사용자 정의 오류 페이지를 원하면 다른 것과 일치하는 다른 경로를 추가하고 컨트롤러 및 동작이 하드 코드되어 있어야합니다.

Application_BeginRequest에서 URL을 기준으로 필터링 할 수도 있지만 라우팅에 필요한 두 줄의 코드보다 더 많은 작업이 필요할 수 있습니다.

0

영역은 코드를 구성하고 해당 영역에 속한 경로를 분리하는 좋은 방법입니다. 그것으로 당신은 특정 지역을 찾아야 할 필요는 없지만, 그 지역의 행동들과 일치 할 것입니다. 당신이 당신이 경로는 관리자 영역 컨트롤러에서 작업을 호출하는 알아야하기 때문에 관리자 영역 경로를 알고

context.MapRoute(
      "AdminRoute", 
      "Admin/{controller}/{action}", 
      new { controller = "Admin", action = "Index" }); 

: 당신이 관리 영역이있는 경우 그래서 당신은 같은 경로가있을 수 있습니다.

context.MapRoute(
      "AdminErrorRoute", 
      "Admin/{*url}", 
      new { controller = "Error", action = "Error" }); 

이/관리자로 시작하는 모든 경로를 가지고 오류 페이지로 리디렉션됩니다 오류 페이지로 예를 들어 위의이 경로를 가지고 재 지정하려면 와일드 카드 경로를 사용할 수 있습니다. 왜 모든 영역의 오류 페이지로 모든 사용자를 리디렉션 할 것인지 확실하지 않습니다. 사용자 단위로 사용자를 원한다면 컨트롤러 액션에서 속성 필터를 사용하여 사용자가 오류 페이지로 리디렉션되어야하는지 확인하십시오. 다음과 같은 내용 :

[IsUserAdmin()] 
public ActionResult Index() { .. }