2011-08-13 17 views
0

マスターページのPlaceHolderに読み込まれたContent要素の要素IDを取得する方法はありますか? EXのためにContentPageをMasterPageに読み込むContentPlaceHolder

: 私のマスターページ、

以下
<form id="form1" runat="server"> 
    <div> 
     <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> 

     </asp:ContentPlaceHolder> 
    </div> 
    </form> 

は、マスターページを使用して他のページです:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
I am the child page 
<asp:Label ID="lbl" runat="server"></asp:Label> 
</asp:Content> 

マスターPageLoadにコンテンツID( "Content2")を取得する方法。

可能なことをお勧めします。事前

+0

は、そのコンテンツセクション内のコントロールに得るためにあなたの本当の目標です(すなわち、 "lbl"ラベル)? – patmortech

+0

私はコンテンツセクションID(すなわち "Content2")を取得する必要があります – sandeep

+0

@sandeep:私が提供したコードスニペットを試しましたか? – sll

答えて

1

のように取得することができます。私はあなたの究極の目標は、そのセクション内のコントロールにアクセスするためにあったかどうかについて尋ねなぜ

A Content control is not added to the control hierarchy at runtime. Instead, the contents within the Content control are directly merged into the corresponding ContentPlaceHolder control.

がそれだ:それはthis MSDN pageに言うようasp:Contentコントロールは、実際にページのコントロール階層の一部ではありません。その場合は、ContentPlaceHolderコントロールを介してそれらにアクセスすることができます。これは、実行時に、コンテンツセクションにあったすべてのコントロールが内部にあるためです。あなたのマスターページでこれを行うことができます。

Label lbl = ContentPlaceHolder1.FindControl("lbl") As Label; 
1

おかげであなたは何がやりたいことができない..です

((ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1")).ClientID 
+0

私はこれを試しましたが、私は何の価値も得ていません。 – sandeep

+0

マイナーチェンジしましたが、今すぐお試しください。ブラケットがありませんでした。 –

+0

私はCodeBehindのMaster Template PageのPageLoad()メソッドで上記のコードを使用しましたが、今でもエラーが発生しています:System.NullReferenceException。 Becoz Master自体がnull – sandeep

2

あなたはマスターページをオーバーライドした場合、あなたは保護さContentPlaceHoldersコレクションにアクセスすることができます

pubic class YourMasterPage : MasterPage 
{ 
    // in Page_Load try out 
    foreach(var placeHolder in this.ContentPlaceHolders) 
    { 
     var contentPlaceHolder = placeHolder as ContentPlaceHolder; 
     if(contentPlaceHolder != null) 
     { 
      Debug.WriteLine("ID: " + contentPlaceHolder.ID); 
      Debug.WriteLine("Client Id" + contentPlaceHolder.ClientID); 
     } 
    } 
} 
+0

返信ありがとうございます。私はこれを試した。しかし、if文はif文に全く入りません。 – sandeep

+0

ContentPlaceHolderオブジェクトではなく、Stringオブジェクト(小文字のContentPlaceHolder IDを含む)のIList内の.Net 4.0、MasterPage、ContentPlaceHoldersに注意してください。この場合、ドキュメント、https://msdn.microsoft.com/en-us/library/system.web.ui.masterpage.contentplaceholders(v=vs.100).aspxは間違っています。 –

関連する問題