のアクセサーとしてマスターにパブリック プロパティを提供する必要があります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;