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
总是一个空字符串?
你说得很对。正如我所提到的,这些事件是按照这个顺序被解雇的。所以我该怎么做?我是否应放弃自己的方法并将隐藏的字段放在我的所有内容页面上? –
它的方法,但我还没有尝试过。在masterpage的init事件中分配值,以便它可以加载页面 – CodeSpread
的事件我删除了我的隐藏字段,而是使用'Session'参数代替它。一切正常......奇怪。 –