总结了一下ASP.Net访问母版页控件、属性、方法及母版页中调用内容页的方法,供大家参考:
首先,必须通过内容页中的MasterTye指令,对母版页实施强类型化,即在内容页代码头的设置中增加如下指令
<%@ MasterType VirtualPath="~/Master/MenuElement.master" %>
其中VirtualPath设置母版页URL地址。
1. 获取母版页控件引用。
示例代码:
/// <summary>
/// 获取对项目元素结构树的引用
/// </summary>
public TreeView ElementStructureTree
{
get
{
return tvElementStructure;
}
set
{
tvElementStructure = value;
}
}
如上代码所示,在母版页中定义一个公共属性ElementStructureTree,该属引用了母版页中tvElementStructure控件,然后在内容页中就可以通过公共属性Master(核心对象Page的一个属性)来引用母版页中tvElementStructure控件,如下:
TreeView tv = Master.ElementStructureTree;
2. 访问母版页属性。
母版页中的属性一般有三种:值类型、类类型、控件类型,上面的“获取母版页控件引用”实际上就是访问控件类型属性,其它两种类型的属性可以用同样的方法访问。
3. 调用母版页方法。
母版页中定义的公共方法可以通过Master直接调用。
4. 母版页中调用内容页的方法。
母版页中定义委托:
public delegate void ElementSelectedChangeHandler();
母版页中实例化委托(又是一个属性):
public ElementSelectedChangeHandler ElementSelectedChange { private get; set; }
在母版页中需要的地方调用委托:
if (ElementSelectedChange != null)
{
ElementSelectedChange();
}
内容页中指定一个与委托签名匹配的方法:
Master.ElementSelectedChange = this.ElementSelectedChange;
在母版页中放入一个VS中标准的控件后,想要简单的调用(即不扩展内容),可以直接在你的子页中,用
(Master.FindControl("TreeView1") as TreeView).SelectedNode.Value,来调用(这个是调用了母版页中的一个树控件)。。。。