獲取母版頁的相關內容有兩種方法

獲取母版頁的相關內容有兩種方法

1 通過findcontrol找控件ID
需要在此事件中~因爲Page_load中時是先內容頁加載然後纔是母版頁加載
    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        Label2.Text = "現在時間是" + (Master.FindControl("Label1") as Label).Text;
        if (Request.QueryString["id"] == "dy")
        {
            (Master.FindControl("Image1") as Image).ImageUrl = "~/Images/ml0069.jpg";
        }
    }

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()
    {
        return Page.User.Identity.Name;
    }
在內容頁中調用 
Label1.Text = "歡迎光臨" + Master.GetUserName();




一、使用FindControl方法獲取母版頁控件的引用
利用內容頁page對象的Master公共屬性,我們可以實現對關聯母版頁的引用。進而使用母版頁的FindControl方法來實現對母版頁控件的訪問。
母版頁MasterPage.master:

< %@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage1.master.cs" Inherits="MasterPage1" %>

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

< html xmlns="http://www.w3.org/1999/xhtml" >
< head runat="server">
    < 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)
    {
        contentlabel.Text = (Master.FindControl("masterlabel") as Label).Text; 
    }
< /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控件強類型化,方便內容頁訪問。對母版頁屬性的訪問也使用該方法。
    {
        get#p#分頁標題#e#
        {
            return masterlabel; 
        }
        set
        {
            masterlabel = value; 
        }
    }
< /script>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

< html xmlns="http://www.w3.org/1999/xhtml" >
< head runat="server">
    < 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)
    {
        contentlabel.Text = Master.MasterPageLabel.Text; 
    }
< /script>
< asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
< asp:Label ID="contentlabel" runat="server">這裏將顯示母版頁masterlabel控件的內容。< /asp:Label>
< /asp:Content>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章