一、獲取母版頁的相關(guān)內(nèi)容
1 通過findcontrol找控件ID
需要在此事件中~因為Page_load中時是先內(nèi)容頁加載然后才是母版頁加載
protected void Page_LoadComplete(object sender, EventArgs e)
{
Label2.Text = "現(xiàn)在時間是" + (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 TextBox LoginName//將母版中的控件以屬性的方法定義出來
{
get { return txtLoginName; }//"txtLoginName"控件的id
}
在內(nèi)容頁中調(diào)用
Session["name"] = Master.LoginName.Text.Trim();
參考資料:
一、使用FindControl方法獲取母版頁控件的引用
利用內(nèi)容頁page對象的Master公共屬性,我們可以實現(xiàn)對關(guān)聯(lián)母版頁的引用。進而使用母版頁的FindControl方法來實現(xiàn)對母版頁控件的訪問。
母版頁MasterPage.master:
< %@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage1.master.cs" Inherits="MasterPage1" %>
內(nèi)容頁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控件的內(nèi)容。< /asp:Label>
< /asp:Content>
其中,“Page_LoadComplete”是內(nèi)容頁面加載完成時觸發(fā)的一個事件。
運行結(jié)果:
二、使用MasterType指令獲取母版頁控件的引用
相對于上面的FindControl方法而言,MasterType顯得很直接。通過使用MasterType,可以創(chuàng)建與母版頁的強類型引用。
將FindControl方法例子中的MasterPage.master更改如下:
將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控件的內(nèi)容。< /asp:Label>
< /asp:Content>
二、從母版頁中找內(nèi)容頁的控件(通過母版頁更改內(nèi)容頁的內(nèi)容)
寫在母版頁中的后臺代碼:
//找到內(nèi)容頁中的Calendar1對象
Calendar cal = ContentPlaceHolder1.FindControl("Calendar1") as Calendar;
//將Calendar1對象中的日期增加一天
cal.SelectedDate = cal.SelectedDate.AddDays(1);//減少一天,參數(shù)為-1;