2009-03-13 2 views
1

ViewEngine을 사용하여 추가 경로를 사용하려고했습니다. ViewEngine의 생성자에서WebFormViewEngine의 MasterLocationFormats가 사용되지 않았습니까?

base.MasterLocationFormats = new string[] { 
    "~/Views/AddedMaster.Master" 
}; 

. aspx 및 ascx (PartialViewLocationFormats, ViewLocationFormats)에서 잘 작동합니다.

web.config 또는 페이지 선언에 여전히 MasterPage를 제공해야합니다. 하지만 그렇게하면 ViewEngine에있는 선언이 아니라이 선언이 사용됩니다. 빈 MasterLocationFormats를 사용하면 오류가 발생하지 않습니다. 이것은 RC1에 구현되지 않았습니까?

답변

1

귀하의 예제는 실제로 완벽하지는 않지만, 귀하의 코드 블록이 생성자 방법의 내부가 아니라 클래스 수준에 있다고 추측합니다. 그 문제는 기본 클래스 (WebFormViewEngine)가 생성자의 "위치 형식"속성을 초기화하므로 선언을 무시합니다. 당신은 단지 마지막 노력 기본의 일종으로 킥에 하드 코딩 된 마스터를 원하는 경우

public CustomViewEngine() 
{ 
    MasterLocationFormats = new string[] { 
     "~/Views/AddedMaster.Master" 
    }; 
} 

, 당신은 같은 것을 할 수 있습니다

public CustomViewEngine() 
{ 
    MasterLocationFormats = new List<string>(MasterLocationFormats) { 
     "~/Views/AddedMaster.Master" 
    }.ToArray(); 
} 
+0

나는 한 기본 생성자에 설정된 MasterLocationFormats. 정말 효과가 있었나요? –

+0

각 뷰에서 @Page 지시어에 유효한 MasterPage를 지정해야합니다. 내 간단한 솔루션이 작동하는지 확인하려면 마스터 페이지를 지정할 수있는 View 메서드 오버로드 중 하나를 사용하십시오. 예 : "View ("Index ","ThisMasterPageDoesntExist ");"를 반환합니다. – thomasjo

관련 문제