ASP.NET実践:ASP.参照NETコントロールページの内容

1806 ワード

コンテンツ・ページにコードを記述して、制御ページのプロパティ、メソッド、およびサブコントロールを参照できますが、プロパティとメソッドについて、制御ページの共通メンバーとして定義されている場合にのみ参照できます.共通プロパティと共通メソッドも含まれます.また、共通メンバー参照とは独立した方法で制御ページのコントロールを参照することもできます.
制御ページの共通メンバーの参照方法
  • は、コンテンツページに@ MasterType命令を追加する.この命令において、VirtualPathパラメータの値を現在の制御ページのパスとして設定し、以下の例:
    
    
    <%@ MasterType virtualpath="~/Masters/Master1.master" %>
    
    
    は、命令がコンテンツページのMaster属性を強くタイプ化することを示す.
  • は、制御ページの共通メンバーをMasterの属性メンバーとして使用するコードを記述する、この例では、コンテンツページのテキスト入力ボックスにおいて、制御ページの共通属性CompanyNameに対して
  • を付与することを意味する.
    制御ページのコントロールを参照する方法
  • は、FindControlメソッドを使用して、Masterをネーミングコンテナとして使用したときに返される値を使用します.次の例では、制御ページの2つのコントロール(1つのFindControlコントロールと1つのTextBoxコントロール)を参照するためにLabelメソッドを使用する方法を示します.TextBoxコントロールはContentPlaceHolderの内部にあるため、まずContentPlaceHolderコントロールの参照を取得し、FindControlメソッドを使用してTextBoxコントロールを位置決めする必要があります.
    
    
    void Page_Load()
    
    {
    
        //   ContentPlaceHolder     TextBox      
    
        ContentPlaceHolder mpContentPlaceHolder;
    
        TextBox mpTextBox;
    
        mpContentPlaceHolder = 
    
          (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
    
        if(mpContentPlaceHolder != null)
    
        {
    
            mpTextBox = 
    
                (TextBox) mpContentPlaceHolder.FindControl("TextBox1");
    
            if(mpTextBox != null)
    
            {
    
                mpTextBox.Text = "TextBox     !";
    
            }
    
        }
    
        
    
        //   ContentPlaceHolder      Label      
    
        Label mpLabel = (Label) Master.FindControl("masterPageLabel");
    
        if(mpLabel != null)
    
        {
    
            Label1.Text = "       = " + mpLabel.Text;
    
        }
    
    }