2010-11-20 5 views
0

asp.net MVC2에서 여러 인터페이스를 사용하여 프로젝트를 설정하는 가장 좋은 방법은 무엇입니까? 나는 우리가 같은 전형적인 배열을 필요로하는 프로젝트를 시작 해요 :Asp.net MVC2 URL 구조 - 모범 사례

example.com/ - 최종 사용자 인터페이스

example.com/Admin/ - 사이트 충분히 포함됩니다

사이트 관리 단순히 모든 사용자 논리를 HomeController에두고 AdminController의 모든 관리 논리를 실제로 선택하는 것은 아닙니다. 나는 여러 경로 정의를 사용하는 방법에 대한 읽었습니다,하지만 다음은 제대로 작동하지 않는 것 :

routes.MapRoute(
      "Admin", // Route name 
      "Admin/{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Admin", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

그것은 대신 example.com/Admin/local-part 가리 키도록 홈페이지에있는 모든 링크의 원인 example.com/local-part.

각 Admin 컨트롤러마다 다른 MapRoute를 지정하는 것을 피하고 싶습니다. 매번 매핑에서 {controller}를 생략하십시오.

프로젝트 내에서 다른 영역을 설정하는 방법에 대해서도 읽었지만이 프로젝트의 범위와 관련하여 도 역시 인 것처럼 보입니다.

마침내 필자는 MapRoutes에 제약 조건을 넣을 수 있다고 읽었지만 그 부분의 설명서는 나에게 혼란스러워 보입니다. 내가 누락 된 명백한 것이 있습니까? 그 실패, 내가 염두에 두어야 asp.net 구조에 대한 모범 사례가 있습니까?

답변

2

지역의 준비가 된 것처럼 들리는군요. area을 설정하는 것은 실제로 그렇게 모든 것이 아니라 기본적으로 등록해야합니다. 기본적으로 영역 라우팅은 global.asax의 기본값과 일치하지만 예외는 URL의 "\ area"슬러그입니다. 몇 달 전에 프로젝트에서 이것을 설정했을 때 몇 분 밖에 걸리지 않았다는 것이 확실합니다.

관리자 컨트롤러가 단일 컨트롤러의 범위를 초과 할 정도로 복잡하면 영역이 보장 될 수 있음을 나타냅니다.