【问题标题】:MasterPage property is always empty in content pageMasterPage 属性在内容页面中始终为空
【发布时间】:2012-11-28 13:48:12
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net delphi-prism oxygene


    【解决方案1】:

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

    INIT_EVENTS:
    INIT_usercontrols
    INIT_MasterPage
    INIT_Page
    
    LOAD Events:
    Load :Page
    Load: MasterPage
    Load: UserControl
    

    【讨论】:

    • 你说的很对。正如我所提到的,事件是按该顺序触发的。所以我该怎么做?我应该放弃我的方法并将我的隐藏字段放在我的所有内容页面上吗?
    • 这是一种方法,但我还没有尝试过。在 masterpage 的 init 事件中分配值,以便它可用于页面的加载事件
    • 我删除了我的隐藏字段,而是使用Session 参数代替它。一切正常……很奇怪。
    • 如果你喜欢我的解释,请访问我在 codespread.com 上的帖子
    猜你喜欢
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多