1

マスターページにがHiddenFieldあり、その値はPage_Loadマスターページのイベントで設定されます。私のコンテンツページの1つで、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常に空の文字列なのですか?

4

1 に答える 1

1

あなたの問題はページのライフサイクルに関連していると思います。initイベントとloadイベントの発生順序を見ると、答えが得られる可能性があります。

INIT_EVENTS:
INIT_usercontrols
INIT_MasterPage
INIT_Page

LOAD Events:
Load :Page
Load: MasterPage
Load: UserControl
于 2012-11-28T14:14:45.477 に答える