2011-02-02 4 views
2

DisplayTemplates와 EditorTemplates을 지원하지 않습니다T4MVC 내가 내보기에 다음 사용 때이 나타났습니다

<% Html.RenderPartial(MVC.Shared.Views.EditorTemplates.ClientOnDocuments); %> 

반환 위의 라인 뷰의 이름 만,이 경우 ClientOnDocuments 너무. 그러면 기본보기 엔진이 실행되어 현재보기의 폴더와 공유 폴더에서 ClientOnDocuments.ascx을 찾지 만 DisplayTemplatesEditorTemplates 폴더는 찾지 않습니다.

저는 T4MVC를 사용하여 꽤 멀리 갔기 때문에 템플릿을 덤프하거나 다른 스타일의 뷰를 혼합하고 싶지 않습니다. 예를 들어 템플리트 경로를 제공하면 위의 예제가 작동합니다. 당신은 공유 루트 모두에 포함 볼 수있는 것을 알 수 있습니다

public class ViewNames { 
    ... 
     public readonly string FirmHeader = "~/Views/Shared/FirmHeader.ascx"; 
     public readonly string PostsSelector = "~/Views/Shared/PostsSelector.ascx"; 
     static readonly _DisplayTemplates s_DisplayTemplates = new _DisplayTemplates(); 
     public _DisplayTemplates DisplayTemplates { get { return s_DisplayTemplates; } } 
     public partial class _DisplayTemplates{ 
      public readonly string ClientOnDocuments = "ClientOnDocuments"; 
      public readonly string DateTime = "DateTime"; 
     } 
     static readonly _EditorTemplates s_EditorTemplates = new _EditorTemplates(); 
     public _EditorTemplates EditorTemplates { get { return s_EditorTemplates; } } 
     public partial class _EditorTemplates{ 
      public readonly string ClientOnDocuments = "ClientOnDocuments"; 
      public readonly string DateTime = "DateTime"; 
      public readonly string PostCode = "PostCode"; 
     } 

미세하지만 분명히 잘 하위 폴더를 처리하지 않습니다

이유는 T4MVC 생성이 코드에있다.

나는 T4MVC 템플릿 파일을 변경할 수 있지만 실제로는 그가 변경/수정하려고하는지에 대한 David Ebbo의 응답을 원합니다.

나는 그가 적어도 12 월에 여기에서 그를 만났기를 바랍니다.

+1

ViewNames (보기의 이름 만 포함하는)와 경로가 포함 된 ViewPath는 두 가지 클래스를 갖는 것이 좋습니다. 이렇게하면 강력한 형식의 이름과 경로에 모두 액세스 할 수 있습니다. – mare

답변

4

흥미롭게도이 다른 동작은 다른 사용자가 문제를 겪은 다음 의도적으로 적용되었습니다. T4MVC.settings.t4이를 찾습니다 :

// Views in DisplayTemplates and EditorTemplates folders shouldn't be fully qualifed as it breaks 
// the templated helper code 
readonly string[] NonQualifiedViewFolders = new string[] { 
    "DisplayTemplates", 
    "EditorTemplates" 
}; 

그래서 일반적으로, 하위 폴더 전체 경로를 얻을 수 있지만 그 두하지 않습니다.

RenderPartial을 호출하는 동안 해당 사용자가 DisplayFor/EditorFor를 호출하여 렌더링하는 것이 다른 점이라고 생각합니다. 이 도움이 어떤 경우

,이 설정 파일이 아닌 기본 템플릿에 있기 때문에 당신이 그 행동을하지 않으려면, 당신은 단순히 목록을 변경할 수 있습니다, 즉

readonly string[] NonQualifiedViewFolders = new string[] { }; 

희망! :)

+0

완벽, 데이비드. – mare

+0

이렇게하면 T4MVC를 통해 뷰의 경로를 참조 할 수 있지만 DisplayFor/EditorFor는 뷰를 찾을 수 없습니다. 그렇습니까? DisplayFor 및 PartialViewResult (다른 컨텍스트에서)를 통해 모두 사용하고있는 DisplayTemplates 뷰가 하나 있기 때문에 너무 좋지 않습니다. DisplayFor를 계속 사용하려면 컨트롤러의 문자열로 정규화 된 경로를 써야합니다. – adamjford

+0

DisplayTemplates 및 EditorTemplates의 경우 예상되는 동작에 대해 전체 경로와 다른 속성에 대해 새 속성을 추가 할 수 없습니까? – PBo

관련 문제