のアクセサーとしてマスターにパブリック プロパティを提供する必要がありますTextBox。Master次に、それに応じてページのプロパティをキャストするだけです。
あなたのマスターで:
public TextBox MasterTextBox {
get {
return txtMasterTextBox;
}
}
子ページで(マスターのタイプが であると仮定してMyMaster):
((MyMaster) this.Master).MasterTextBox.Text = childTextBox.Text;
ただし、これはあなたのFindControlアプローチよりもクリーンな方法であるためTextBox、変更されたテキストが表示されない理由がわかりません。多分それDataBindはポストバックの問題です。
さらに良い方法は、プロパティでコントロールを公開するのではなく、それだけを公開することTextです。次に、基になる型を簡単に変更できます。TextBoxタイプをからに変更することを検討してくださいLabel。すべてのコンテンツ ページを で変更するFindControl必要があります。コンパイラの警告は表示されませんが、実行時例外が発生します。プロパティのアプローチでは、コンパイル時のチェックがあります。基になるコントロールの を取得/設定するだけのプロパティに変更した場合でもText、コンテンツ ページの 1 つをまったく変更せずに変更できます。
例えば:
public String MasterTextBoxText {
get {
return txtMasterTextBox.Text;
}
set {
txtMasterTextBox.Text = value;
}
}
およびコンテンツページで:
((MyMaster) this.Master).MasterTextBoxText = childTextBox.Text;