2009-04-06 3 views
0

PreInit()에서 HTTPModule을 통해 설정된 마스터 페이지가 있습니다. 행복한 시간! 문제는 레이아웃 문제로 인해 몇 페이지에서 masterpagefile 값을 무시해야합니다. 누구나 최선의 방법을 알고 있습니까?masterpage 모듈 오버라이드

내 페이지에 Page_Preinit를 추가하려고했지만 내 모듈의 PreInit() 전에 실행되어 결국 재설정됩니다. 아마도 내 페이지에서 컨텍스트 변수를 업데이트해야한다고 생각하고 있습니다. (masterSetAtPage와 같은 것이 제가 제 모듈에서 분기 할 수도 있습니다.) 어떤 생각이 들었습니까?

VB.Net에서 작업하고 있지만 C# 예제도 좋을 것입니다. 그래서, 당신이 뭔가를 찾기 위해 PreInit를 후크 코드를 변경 할 수있는 경우

+0

PreInit 코드를 업데이트하여 필요한 마스터 페이지를 지정하거나로드되는 내용에 따라 마스터 페이지를 업데이트해야합니까? –

+0

당신이하고 싶은 일에 대해 더 잘 설명 할 수 있습니까? 커다란 장애물은 일반적으로 마스터 페이지를 성공적으로 설정하기 위해 PreInit을 얻는 것입니다. 설정하지 않거나 다른 페이지로 설정하는 것이 좋습니다. – JoshJordan

답변

1

아마도 현재의 코드는 ... 여기에서 설명하는 코드처럼

http://www.odetocode.com/articles/450.aspx

을 조금 보인다 ...

if (page != null && String.IsNullOrEmpty(page.MasterPageFile)) 
{ 
    page.MasterPageFile = "~/Master1.master"; 
} 

다음은 "기본"마스터 페이지에 매여되지 않도록하는 masterpagefile을 설정하는 자신의 페이지 지시자의 사용하는 페이지입니다. 페이지의 코드에서

당신이 프로그래밍 방식으로 다음이 코드를이 작업을 수행해야하는 경우

...
protected override void OnPreInit(EventArgs e) 
{ 
    base.OnPreInit(e); 
    this.MasterPageFile = "cheese.master"; 
} 

은 ... 뒤에 트릭을 할 것입니다. 분명히이 코드는 특별한 동작이 필요한 페이지에만 추가 될 것입니다.

+0

그러나보기에는 좋지만 실제로 프로그래밍 방식으로 마스터를 설정해야하므로 페이지 지시어에 정적 값을 설정할 수 없습니다. – madcolor

+0

OK ... 이렇게하면 ... 보호 된 무효 OnPreInit (EventArgs e) { base.OnPreInit (e); this.MasterPageFile = "cheese.master"; } ... 페이지에서 작동해야합니다. 나는 이것이 Mark가 제안한 것 (위)과 거의 같다는 것을 알고있다. OnPreInit이 아니라 OnInit을 보여 주긴했지만. –

+0

@ 마틴 - 네, 나는 그 중 하나를 pooched. ;) PreInit은 적절한 장소입니다. –