[ad_1]
こんにちは、マスターページを使用せずにページで作業しているとき。
私は単純にコントロールを見つける
this.page.findControl("txtcontrol")
しかし、マスターページと他のユーザーコントロールをそのページに統合し、同じコントロールを見つけようとすると。 私はnullになっています..
これについて私を助けてください。
もう1つ、デバッグカウント時にクイックビューでthis.page.conrolls.countを見ると、常に「1」になります。
前の場合と同様に、masterpage カウントがない場合は、ページ コントロールの数になります。
これについて何か考えを教えてください
ありがとう
解決策 2
コンテンツではなくマスター ページを検索しているため、「1」コントロールしか表示されていません。
マスターを持つページでコントロールを見つけるには、次のようにする必要があります。
this.Master.FindControl("MainContentPlaceHolder").FindControl("MyControl")
もちろん、必要に応じて ID を調整します。
コントロールには、次のような一意の ClientID もあります。
ctl00_MainContentPlaceHolder_MyControl
ブラウザでソースを表示して、実行時にコントロールに実際に名前が付けられていることを確認します。 あなた できる その ClientID を使用して FindControl を実行しますが、最初の方法で実行する方がクリーンです。
解決策 1
マスター ページではなく、ユーザー コントロールのコード ビハインド内でコントロールを検索する必要があります。 マスター ページは、マスター ページから表示されているユーザー コントロールの内部について何も知る必要はありません。また、ユーザー コントロールは、パブリック プレースホルダー名以外のマスター ページについて何も認識しないようにする必要があります。 これを行う必要がある場合は、ページの固有のデザインが正しくないことをお勧めします。問題の解決策は、間違った場所で何かをしようとするのではなく、このデザインの問題を修正することです.
[ad_2]
コメント