ASP.Net訪問母版頁(MasterPage)控件、屬性、方法及母版頁中調用內容頁,獲取用戶自定義控件裏面的子控件的方法

首先,必須通過內容頁中的MasterTye指令,對母版頁實施強類型化,即在內容頁代碼頭的設置中增加如下指令
<%@ MasterType VirtualPath="~/Master/MenuElement.master" %>

其中VirtualPath設置母版頁URL地址。

母板頁定義如下屬性:

 

   引用母板頁做如下調用:

  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方法解決問題!但是要注意轉型的問題!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章