ASP.Net訪問主版頁面(MasterPage)控制項、屬性、方法及主版頁面中調用內容頁,擷取使用者自訂控制項裡面的子控制項的方法

來源:互聯網
上載者:User

今天做項目突然遇到一個問題,就是母板頁裡面有個表格,調用有 A,B,C三個Class

 但是在新頁面我不想要這個三個Class,經過高人點撥。通過訪問母板頁屬性實現了

這個效果

首先,必須通過內容頁中的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頁中控制項的所有事件。

 

   今天突然遇到一個問題就是如何擷取使用者自訂控制項裡面的子控制項的問題!

        去Google了一下。。嘿嘿找到結果了。。記錄下來!

    

    頁面代碼如下:

 

          

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.