2012-07-12 3 views
1

Asp.net MVC 및 디렉토리 구조에 대한 여러 가지 질문을 읽었지만 www.mysite.com과 같은 일반 URL 디렉토리를 그대로 사용하는 방법을 아직 이해하지 못했습니다./books/adventure/ukAsp.net MVC URL 및 디렉토리 구조

홈, 정보, 연락처 등의 표준 사이트 페이지를 생각할 때 각각에 대한 컨트롤러를 만들고 싶지는 않지만 URL은 다음과 같이합니다 : 당신은

사람이 날이 이해할 수 있도록지도 노선 객체의 충분한 이해가 www.mysite.com/about이 원하는 바람직 할 www.mysite.com/home/about ? 당신이 원하는 경우 www.mysite.com/Controller/Action/ID

:

감사합니다, 자크

답변

1

이 기본적으로 global.asax.cs

에서 완벽하게 사용자 정의 할 새 MVC 프로젝트는 규칙을 다음과 표준 '캐치 올'경로를 추가합니다 예를 들어 www.mysite.com/about으로 HomeController.About() 액션으로 라우팅하는 경우와 같은 다른 경로를 추가 할 경우 다음 경로를 추가하십시오. 앞에 catch 슬롯이 있습니다.

routes.MapRoute(
    "My About Route", 
    "About", 
    new { controller = "Home", action = "About" } 
); 

MVC 캐치 올 규칙을 따르지 않는 여러 개의 사용자 지정 경로를 추가 할 수 있으며 원하는 경우 캐치 올 경로를 모두 바꿀 수도 있습니다.


편집 :

가, 아니 당신이 반드시 모든 가능한 조치에 대해 경로를 추가 할 필요가 없습니다, 아래의 코멘트에 답변을 대신 당신이 URL의 패턴에 맞는 하나의 경로를 만들 수 있습니다 - 단지 캐롤 어른처럼. {controller}{action}은 특별한 키워드입니다.

예 :

1) 프로그램이 마지막 setController을 가지고 있지만, 사용자의 그들에게 일괄 전화에 익숙한 :

routes.MapRoute(
    "Batch", 
    "Batch/{action}/{id}", 
    new { controller = "Set", action = "Index", id = UrlParameter.Optional } 
); 

2.) 당신은 컨트롤러에 대한 객체의 유형에 따라 그룹으로 선호

  • FlightController
  • HotelController
  • :하지만 URL의 수 동사/명사 형식이
  • /발견/비행/책/비행
  • /찾기/호텔/예약/호텔/두 번째 예는 모두 기본 경로를 대체 할 수

    routes.MapRoute(
        "NewCatchall", 
        "{action}/{controller}/{name}", 
        new { controller = "Home", action = "Index", name = UrlParameter.Optional } 
    ); 
    

    힐튼

, 모든 가능한 URL은 형식에 맞을 것입니다. 그래서 다른 경로를 확인하기 위해 계속 될 것은 없습니다. 경로가 순서대로 검사되고 요청과 일치하는 첫 번째 패턴이 사용된다는 것을 아는 것이 중요합니다. 나머지는 무시됩니다.

+0

감사 arserbin3 : 배울 때

은 나에게 유용했다. 그래서 여러분이 말하고자하는 것은 이러한 일반적인 페이지들에 대해 글로벌 asax 파일에 경로를 만들어야한다는 것입니다. 나는 CMS 환경에서 일할 때마다 그렇게 익숙해 진 것 같아요. 그것은 MVC의 관점에서 비록 이해가됩니다. 다시 한 번 감사드립니다 – Jacques

+0

www.mysite.com/services/electrical/contractors와 같은 자세한 디렉토리 구조는 어떨까요? – Jacques