【解決方法】マスターページを使用するときに現在のページからコントロールを見つける方法


こんにちは、マスターページを使用せずにページで作業しているとき。
私は単純にコントロールを見つける

C#
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

マスター ページではなく、ユーザー コントロールのコード ビハインド内でコントロールを検索する必要があります。 マスター ページは、マスター ページから表示されているユーザー コントロールの内部について何も知る必要はありません。また、ユーザー コントロールは、パブリック プレースホルダー名以外のマスター ページについて何も認識しないようにする必要があります。 これを行う必要がある場合は、ページの固有のデザインが正しくないことをお勧めします。問題の解決策は、間違った場所で何かをしようとするのではなく、このデザインの問題を修正することです.

コメント

タイトルとURLをコピーしました