您必须在 master 中提供一个公共属性作为TextBox
. 然后你只需要相应地转换Master
页面的属性。
在你的主人:
public TextBox MasterTextBox {
get {
return txtMasterTextBox;
}
}
在您的子页面中(假设您的主人的类型是MyMaster
):
((MyMaster) this.Master).MasterTextBox.Text = childTextBox.Text;
但是,这只是比您的方法更清洁的FindControl
方法,所以我不确定为什么TextBox
不显示您更改的文本。也许这是DataBind
回发的问题。
更好的方法是不公开属性中的控件,而只公开Text
. 然后您可以轻松更改基础类型。考虑您要将类型从更改TextBox
为Label
以后。您必须使用 更改所有内容页面FindControl
,您甚至不会收到编译器警告而是运行时异常。使用 proeprty 方法,您可以进行编译时检查。如果您甚至将其更改为仅获取/设置Text
底层控件的属性,则可以在不更改任何内容页面的情况下更改它。
例如:
public String MasterTextBoxText {
get {
return txtMasterTextBox.Text;
}
set {
txtMasterTextBox.Text = value;
}
}
并在内容页面中:
((MyMaster) this.Master).MasterTextBoxText = childTextBox.Text;