2012-05-05 5 views
1

こんにちは私はかなりの間この状況に悩まされていますか?ここで何か助けを探していますか?マスターページからコントロールプレイヤーホルダーにアクセスする

私のカスタムマスターページ

がかかる(content.aspx言う)私が

次の内容のページからコードsnipetがある(デフォルト一つを参照WebAppのおよびその他のカスタムマスターページのための1つのデフォルト)入れ子になったマスターページを定義していますASPXのソースコード内の

私が含まれています:

​​

とファイルすなわち背後にあるコードでは。 custom.aspx.csは、(問題がある場合である):

ContentPlaceHolder masterContentPlaceHolder = (ContentPlaceHolder)Page.Master.Master.FindControl("MainContent"); //works well 
ContentPlaceHolder nestedContentPlaceHolderHeading = (ContentPlaceHolder)masterContentPlaceHolder.FindControl("NestedMasterHeading"); //works well 
Label NewsHeadLines = (Label)nestedContentPlaceHolderHeading.FindControl("lblSubSectionHeader"); //returns null?? The Control ID is all checked and is the same in the Nested Master Page. 
**NewsHeadLines.Text = "Testing";** //System.NullReferenceException: 

オブジェクト参照がオブジェクトのインスタンスに設定されていません。

HTMLテーブル、行、列にコントロール(ここではラベル)を入れ子にしているので、それは起こっていますか?お知らせ下さい?そして私はコントロールの名前やIDをダブルチェックしました。

+0

FindControlを使用する代わりに、適切なコントロールのプロパティ(f。 'Text')へのアクセスを提供するパブリックプロパティをマスターページに提供する必要があります。この場合、プロパティ 'NewsHeadLines'を実装することができます。あなたはいつも(マスター)ページ内のコントロールへのダイレクトリファレンスを持っています。したがって、これらのプロパティにアクセスする前に、マスターを正しいタイプにキャストするだけで済みます。 –

+0

偉大なアイデアティム。しかし、その行を逃した。 Thnx。 – Vaibhav

答えて

0

1つまたは2つのネストされたコンテナが不足している可能性があります。これを試して;ネストされたコンテナを理解しようとする代わりに、それらを取得するための共通のプログラミングロジックが必要です。 Rick Strahl'sを見てくださいblog post

+0

コンテンツページのソースコード内のコントロールを作成すると、ネストされたマスターページのコントロールがnullになりました。したがって、私がしなければならなかったのは*** Auto Generated Source Code Snipetのコメント***です。 返信してくれてありがとう、ブログの投稿リンクに感謝します。私は、Rick Strahl'sを含む著者から質の高いブログをフォローしています。 – Vaibhav

関連する問題