문제

나는 이것이 매우 쉬울 것이라고 생각했지만 완전히 당황했습니다.

해당 컨트롤러의 하위 디렉토리가 아닌 한 컨트롤러의 뷰가 응용 프로그램의 루트 레벨에 있기를 원하지만 파악할 수는 없습니다.

이 두 URL을 갖고 싶습니다.

/info- 컨트롤러의 "home"에서 "정보"조치를 취해야합니다.

/ admin/ - 이것은 컨트롤러 "admin"의 조치 "색인"(기본값)이어야합니다.

지금까지 내가 시도한 내용에 관계없이 첫 번째 경로는 두 가지를 모두 잡을 것입니다. 나는 둘을 분리 할 수없는 것 같다.

해당 정보 페이지에는 컨트롤러가 필요하지 않습니다. 정적이지만 마스터 페이지를 사용하고 싶습니다. 이것을 끌어내는 훨씬 쉬운 방법이있을 수 있지만, 나는 그것을 알아 차리지 못했습니다.

내가 생각할 수있는 것은 정보 컨트롤러를 만들고보기/홈/정보를보기/정보/색인으로 이동하는 것입니다.

나는 이것을 사용하여 레일로 이것을 할 수 있었다.

  map.connect ':controller/:action/:id'
  map.connect ':action', :controller => 'home'
도움이 되었습니까?

해결책

적절한 경로 만 있으면됩니다. 귀하의 경우 :

routes.MapRoute(
                "Info",
                "Info",
                new { controller = "Home", action = "Info" }

routes.MapRoute(
                "Admin",
                "Admin",
                new { controller = "Admin", action = "Index" }

그러나 나는 당신을 추천합니다 이것 접근하다.

기본 물리적 위치를 변경 해야하는 경우/partialviews의 물리적 위치를 변경 해야하는 경우
체크 아웃 어떻게 사용자 정의보기 엔진을 만듭니다.

다른 팁

경로 속성을 사용할 수 있습니다.

경로 구성 파일에 있어야합니다.

        routes.MapMvcAttributeRoutes();
        AreaRegistration.RegisterAllAreas();
        //code below should already be in your route config by default
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

그런 다음 모든 작업 위에 경로 속성을 가질 수 있습니다.

 [Route("info")]

매개 변수 및/또는 하위 폴더를 추가하여 이러한 속성으로 더 발전 할 수도 있습니다.

 [Route("blog/posts/{postId}")]

위의 속성을 모든 작업에 넣을 수 있으며 블로그 컨트롤러에서 시작되는 것처럼 보입니다. 그러나 블로그 컨트롤러가 필요하지 않습니다. 또한 {}는 매개 변수를 나타냅니다. 따라서 동작이 Curly Braces의 내용과 동일한 매개 변수를 취하고 있는지 확인하십시오. 이 경우 매개 변수는 다음과 같습니다

string postId
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top