2012-04-08 6 views
5

Ich habe 2 Master-Seiten, die nested.this sind, ist Haupt-Master-Seite Code zum Beispiel:Wie Kontrollen in Main-Master-Seite von Content-Seite in Nested Master-Seite zugreifen

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

<!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> 
    <asp:ContentPlaceHolder id="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
    <asp:TextBox ID="txtMasterPageMaster" ClientIDMode="Static" runat="server"></asp:TextBox> 
    <div style="background-color:Aqua;height:40px;"> 
    Some Text 
    </div> 
    <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> 

    </asp:ContentPlaceHolder> 
</div> 
</form> 

und die verschachtelte Masterseite:

<%@ Master Language="C#" MasterPageFile="~/MasterPageMaster.master" AutoEventWireup="true" 
CodeFile="MasterPageNested.master.cs" Inherits="MasterPageNested" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
    <asp:Panel runat="server" ID="panelMain" BackColor="lightyellow"> 
    <h2> 
     Child master</h2> 
    <asp:Panel runat="server" ID="panel1" BackColor="lightblue"> 
     <p> 
      This is child master content.</p> 
     <asp:ContentPlaceHolder ID="ChildContent1" runat="server" /> 
    </asp:Panel> 
    <asp:Panel runat="server" ID="panel2" BackColor="pink"> 
     <p> 
      This is child master content.</p> 
     <asp:ContentPlaceHolder ID="ChildContent2" runat="server" /> 
    </asp:Panel> 
    <br /> 
</asp:Panel> 
</asp:Content> 

und ich eine Seite auf der Grundlage dieser verschachtelten Master-Seite:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPageNested.master" AutoEventWireup="true" CodeFile="PageMasterPageNested.aspx.cs" Inherits="PageMasterPageNested" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ChildContent1" Runat="Server"> 
</asp:Content> 
    <asp:Content ID="Content2" ContentPlaceHolderID="ChildContent2" Runat="Server"> 
    <asp:Button ID="Button1" runat="server" Text="Button" Height="66px" 
    onclick="Button1_Click" Width="196px" /> 
</asp:Content> 

Ich möchte in Button1 Text von Haupt-Master-Seite erhalten.

Wie kann ich das tun?

Antwort

17

In PageMasterPageNested.aspx:

TextBox txtBox = this.Master.Master.FindControl("txtMasterPageMaster") as TextBox; 

funktionieren sollte. Versuche es. Ich hoffe es hilft.

0

Das funktioniert auf jeden Fall. vor allem, wenn Sie nicht wissen, wie viele Masterseiten Sie verschachtelt haben. Hoffe es hilft :)

MasterPage tmp = this.Master; 
while (tmp.Master != null) 
{ 
    tmp = tmp.Master; 
} 

var control = tmp.FindControl("form1"); 
Verwandte Themen