2012-11-28 7 views
1

내 마스터 페이지에 HiddenField이 있고 그 값은 Page_Load 마스터 페이지 이벤트로 설정됩니다. 내 콘텐츠 페이지 중 하나에서 Page_Load 이벤트에이 값이 필요합니다. 그래서 내 콘텐츠 페이지에 <%@ MasterType VirtualPath="~/Site.Master"%>을 추가하고 숨겨진 필드 값을 읽으려면 마스터 페이지에 속성을 만들었습니다. 그러나 Page_Load 이벤트는 내 순서가 항상 빈 문자열이므로 내용의 페이지와 마스터 페이지의 순서가 역순으로 실행되는 것처럼 보입니다. 내 속성 read 메소드 및 Page_Load 이벤트에 대한 코드는 다음과 같습니다.콘텐츠 페이지에서 MasterPage 속성이 항상 비어 있습니다.

method ContentPage.Page_Load(sender : object; e : EventArgs); 
var 
    Center: DropDownList; 
begin 
    if Master.CurrentCenter <> '-1' then // --< Master.CurrentCenter is always an empty string 
    begin 
    Center := DropDownList(cuWizard.CreateUserStep.ContentTemplateContainer.FindControl("Center")); 
    Center.Enabled := False; 
    end; 
end; 

왜 항상 CurrentCenter 빈 문자열 :

Site = public partial class(System.Web.UI.MasterPage) 
    protected 
    method Page_Load(sender : object; e : EventArgs); 
    private 
    method GetCurrentCenter: String; 
    public 
    property CurrentCenter: String read GetCurrentCenter; 
    end; 

method Site.Page_Load(sender : object; e : EventArgs); 
begin 
    hfCurrentCenter.Value := '1'; 
end; 

method Site.GetCurrentCenter: String; 
begin 
    Result := hfCurrentCenter.Value; 
end; 

그리고 여기 내 콘텐츠 페이지에서 Page_Load 이벤트입니까?

답변

0

문제는 페이지 수명주기와 관련이 있다고 생각합니다. init 및 load 이벤트의 발생 순서를 보면 대답을 얻을 수 있습니다.

INIT_EVENTS: 
INIT_usercontrols 
INIT_MasterPage 
INIT_Page 

LOAD Events: 
Load :Page 
Load: MasterPage 
Load: UserControl 
+0

당신은 맞습니다. 내가 언급했듯이, 그 사건은 그 순서대로 해고된다. 그래서 내가 무엇을해야하니? 내 접근 방식을 포기하고 숨겨진 필드를 내 모든 콘텐츠 페이지에 배치해야합니까? –

+1

그것의 접근 방식이지만 아직 시도하지 않았습니다. 페이지 – CodeSpread

+0

의 이벤트를로드 할 수 있도록 masterpage의 init 이벤트에 값을 할당합니다. 숨겨진 필드를 삭제하고 그 대신에 'Session' 매개 변수를 사용했습니다. 모든 것이 잘 작동합니다. 이상한. –