2009-11-10 3 views
1

ASP.NET MVC 프로젝트에서 T4MVC를 사용하고 있습니다.T4MVC를 사용하여 부분 뷰 경로 지정

은 내가보기에이 같은 문이 :

<% Html.RenderPartial(MVC.SomeController.Views.PartialViewName); %> 

하기 이전에이 같은 한 :

<% Html.RenderPartial("../SomeController/PartialViewName"); %> 

이전이 잘 작동하지만, 한 내가 T4MVC를 사용하여 부분 뷰를 지정한 후, 해당 부분보기를 찾을 수 없습니다.

그냥 아래 경로에서 찾으려고합니다. 이것이 기본 동작입니다.

~/Views/SomeController 
~/Views/Shared 

T4MVC를 통해 다른 컨트롤러의보기 폴더에있는 부분보기를 지정하는 방법이 있습니까? 또는 내가하고있는 것은 무엇이든, 맞습니까? 내가 뭘 놓치고 있니?

감사합니다.

답변

4

하나의 접근법 - 뷰 엔진을 확장하고 특정 부분 뷰 위치를 인식 할 수 있습니다. 나는 모든 부분보기를 Views/Home/Partial (여기서 Home => 컨트롤러 이름) 폴더에 넣었습니다.

public class ViewEngine : WebFormViewEngine 
    { 
     public ViewEngine() 
     { 
      PartialViewLocationFormats = PartialViewLocationFormats 
       .Union(new[] 
         { 
          "~/Views/{1}/Partial/{0}.ascx", 
          "~/Views/Shared/Partial/{0}.ascx", 
         }).ToArray(); 
     } 
    } 

하지만 앱을 잘못 구성하는 것으로 들립니다. 컨트롤러 관련 부분 뷰는 다른 컨트롤러와 연결된 부분 뷰를 렌더링해서는 안됩니다. 해당 부분 뷰를 공유 폴더에 넣습니다.

+0

+1은 앱의 구조화에 대해 지적합니다. 감사합니다. –

4

이미 알고 있겠지만 짧은 이름 대신보기에 대한 전체 경로를 생성하도록 T4MVC를 변경했습니다. 따라서 위의 코드는 작동해야합니다. 문제가 발생하면 알려주세요.

이것은 빌드 2.6.03에 있습니다. Download Page.