ASP.Net访问母版页(MasterPage)控件、属性、方法及母版页中调用内容页,获取用户自定义控件里面的子控件的方法

今天做项目突然遇到一个问题,就是母板页里面有个表格,调用有 A,B,C三个Class

 但是在新页面我不想要这个三个Class,经过高人点拨。通过访问母板页属性实现了

这个效果


首先,必须通过内容页中的MasterTye指令,对母版页实施强类型化,即在内容页代码头的设置中增加如下指令
<%@ MasterType VirtualPath="~/Master/MenuElement.master" %>

其中VirtualPath设置母版页URL地址。

母板页定义如下属性:

ASP.Net访问母版页(MasterPage)控件、属性、方法及母版页中调用内容页,获取用户自定义控件里面的子控件的方法

   引用母板页做如下调用:

  master.LightBlueBg = "";

  如此就成功的将母板页调用的3个Class取消掉。。

  总结功能:

 

总结了一下ASP.Net访问母版页控件、属性、方法及母版页中调用内容页的方法,供大家参考:

首先,必须通过内容页中的MasterTye指令,对母版页实施强类型化,即在内容页代码头的设置中增加如下指令

<%@ MasterType VirtualPath="~/Master/MenuElement.master" %>

其中VirtualPath设置母版页URL地址。

1.     获取母版页控件引用。

示例代码

    /// <summary>

    /// 获取对母板页中一个TreeView控件的引用

    /// </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;

5.     Master页的AutoEventWireup属性一定要设置为"true",才会自动触发Master页中控件的所有事件。

 

   今天突然遇到一个问题就是如何获取用户自定义控件里面的子控件的问题!

        去谷歌了一下。。嘿嘿找到结果了。。记录下来!

    

    页面代码如下:

 

          

    Panel Login = (Panel)this.RightCommen1.FindControl("PanelLogin");
        Panel PanelHot = (Panel)this.RightCommen1.FindControl("PanelHot");
        Panel PanelSchool = (Panel)this.RightCommen1.FindControl("PanelSchool");
        Panel PanelTea = (Panel)this.RightCommen1.FindControl("PanelTea");
        Panel PanelHuiSuo = (Panel)this.RightCommen1.FindControl("PanelHuiSuo");
        Panel PanelEnd = (Panel)this.RightCommen1.FindControl("PanelEnd");

        PanelSchool.Visible = true;
        PanelHuiSuo.Visible = false;
        PanelEnd.Visible = false;

   

         嘿嘿通过FindControl方法解决问题!但是要注意转型的问题!

你可能感兴趣的:(asp.net)