你可以在内容页中编写代码来引用控制页中的属性、方法、以及子控件,不过会受到某种规则的限制:对于属性和方法,只有它们被定义成控制页中的公共成员的时候,你才可以进行引用,也包括公共属性和公共方法。另外,你还可以在独立于公共成员引用的方式之外对控制页中的控件进行引用。
如何引用控制页中的公共成员
-
在内容页中添加一个
@ MasterType
指令。并在该指令中设置VirtualPath
参数的值为当前控制页的路径,如下实例:<%@ MasterType virtualpath="~/Masters/Master1.master" %>
提示:该指令会导致内容页的
Master
属性被强类型化。 -
编写代码把控制页中的公共成员当作
Master
属性成员来使用,在该实例中,是指在内容页的文本输入框中为控制页中的公共属性CompanyName
赋值:
如何引用控制页中的控件
-
使用
FindControl
方法,对把Master
当作命名容器时所返回的值进行使用。如下实例显示了如何使用
FindControl
方法来引用控制页中的两个控件(一个TextBox
控件和一个Label
控件)。因为TextBox
控件位于ContentPlaceHolder
的内部,所以你必须首先获取ContentPlaceHolder
控件的引用,然后使用它的FindControl
方法对TextBox
控件进行定位。void Page_Load() { // 在 ContentPlaceHolder 中获取 TextBox 控件的引用 ContentPlaceHolder mpContentPlaceHolder; TextBox mpTextBox; mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1"); if(mpContentPlaceHolder != null) { mpTextBox = (TextBox) mpContentPlaceHolder.FindControl("TextBox1"); if(mpTextBox != null) { mpTextBox.Text = "TextBox 已经找到!"; } } // 在 ContentPlaceHolder 之外获取 Label 控件的引用 Label mpLabel = (Label) Master.FindControl("masterPageLabel"); if(mpLabel != null) { Label1.Text = "控制页的标签 = " + mpLabel.Text; } }