2012-11-28 34 views
1

我的主页面上有一个HiddenField,并且它的值在主页面的Page_Load事件中设置。在我的其中一个内容页面中,我需要Page_Load事件中的此值。所以我将<%@ MasterType VirtualPath="~/Site.Master"%>添加到我的内容页面,并在母版页中创建一个属性以读取隐藏字段的值。但Page_Load事件似乎是以相反的顺序触发的,即首先是内容页面,然后是母版页,因为我的属性始终是空字符串。以下是我的房产read方法和Page_Load事件的代码。MasterPage属性在内容页面中始终为空

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事件:

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总是一个空字符串?

回答

0

我认为你的问题与页面生命周期有关。如果你看一下init和load事件的触发顺序,那么你可能会得到你的答案。

INIT_EVENTS: 
INIT_usercontrols 
INIT_MasterPage 
INIT_Page 

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

你说得很对。正如我所提到的,这些事件是按照这个顺序被解雇的。所以我该怎么做?我是否应放弃自己的方法并将隐藏的字段放在我的所有内容页面上? –

+1

它的方法,但我还没有尝试过。在masterpage的init事件中分配值,以便它可以加载页面 – CodeSpread

+0

的事件我删除了我的隐藏字段,而是使用'Session'参数代替它。一切正常......奇怪。 –

相关问题