訪問母版頁控制項及屬性

2021-05-22 14:20:59 字數 3469 閱讀 4088

1 通過findcontrol找控制項id

需要在此事件中~因為page_load中時是先內容頁載入然後才是母版頁載入

protected void page_loadcomplete(object sender, eventargs e)

}2 通過強引用

<%@ page language="c#" masterpagefile="~/masterpage.master" autoeventwireup="true" codefile="default2.aspx.cs" inherits="default2" title="untitled page" %>

<%@ mastertype virtualpath="~/masterpage.master" %>

然後可以在母版頁中定義公共屬性或方法

public string getusername()

在內容頁中呼叫

label1.text = "歡迎光臨" + master.getusername();

一、使用findcontrol方法獲取母版頁控制項的引用

利用內容頁page物件的master公共屬性,我們可以實現對關聯母版頁的引用。進而使用母版頁的findcontrol方法來實現對母版頁控制項的訪問。

母版頁masterpage.master:

< title>母版頁< /title>

< /head>

< body>

< form id="form1" runat="server">

< asp:label runat="server" id="masterlabel">母版頁的內容< /asp:label>

< div>

< asp:contentplaceholder id="contentplaceholder1" runat="server">

< /asp:contentplaceholder>

< /div>

< /form>

< /body>

< /html>

內容頁content1.aspx:

< %@ page language="c#" masterpagefile="~/masterpage1.master" autoeventwireup="true" codefile="content1.aspx.cs" inherits="content1" title="untitled page" %>

< script runat="server">

void page_loadcomplete(object sender, eventargs e)

< /script>

< asp:content id="content1" contentplaceholderid="contentplaceholder1" runat="server">

< asp:label id="contentlabel" runat="server">這裡將顯示母版頁masterlabel控制項的內容。< /asp:label>

< /asp:content>

其中,「page_loadcomplete」是內容頁面載入完成時觸發的乙個事件。

執行結果:

二、使用mastertype指令獲取母版頁控制項的引用

相對於上面的findcontrol方法而言,mastertype顯得很直接。通過使用mastertype,可以建立與母版頁的強型別引用。

將findcontrol方法例子中的masterpage.master更改如下:

< %@ master language="c#" autoeventwireup="true" codefile="masterpage1.master.cs" inherits="masterpage1" %>

< script runat="server">

public label masterpagelabel//注意:將母版頁label控制項強型別化,方便內容頁訪問。對母版頁屬性的訪問也使用該方法。

< title>母版頁< /title>

< /head>

< body>

< form id="form1" runat="server">

< asp:label runat="server" id="masterlabel">母版頁的內容< /asp:label>

< div>

< asp:contentplaceholder id="contentplaceholder1" runat="server">

< /asp:contentplaceholder>

< /div>

< /form>

< /body>

< /html>

將findcontrol方法例子中的content1.aspx更改如下:

< %@ page language="c#" masterpagefile="~/masterpage1.master" autoeventwireup="true" codefile="content1.aspx.cs" inherits="content1" title="untitled page" %>

< %@ mastertype virtualpath="~/masterpage1.master" %>

< script runat="server">

new void page_load(object sender, eventargs e)

< /script>

< asp:content id="content1" contentplaceholderid="contentplaceholder1" runat="server">

< asp:label id="contentlabel" runat="server">這裡將顯示母版頁masterlabel控制項的內容。< /asp:label>

< /asp:content>

巢狀母版頁中的控制項訪問

巢狀母版頁中的控制項訪問 左直拳巢狀母版頁中的控制項訪問很彆扭。如果乙個內容頁對應乙個沒有巢狀的母版頁,訪問這個母版頁上的控制項眾所周知 類似 button page.master.findcontrol button1 可是這個母版頁如果又巢狀在另乙個母版頁裡面,上述語句包你什麼東西都訪問不到。假...

巢狀母版頁中的控制項訪問

巢狀母版頁中的控制項訪問 左直拳巢狀母版頁中的控制項訪問很彆扭。如果乙個內容頁對應乙個沒有巢狀的母版頁,訪問這個母版頁上的控制項眾所周知 類似 button page.master.findcontrol button1 可是這個母版頁如果又巢狀在另乙個母版頁裡面,上述語句包你什麼東西都訪問不到。假...

母版頁訪問內容頁

內容頁訪問母版頁,理所當然,是人都知。但母版頁訪問內容頁呢?用委託。實現 1 母版頁宣告和定義乙個委託 2 內容頁裡將具體實現方法附加到委託上 3 母版頁檢查該委託是否為空,非空的話就執行該委託 母版頁 public delegate void dlgshowcontent string conte...