2012-04-08 19 views
5

Mam 2 stron wzorcowych, które są nested.this jest główny kod strony wzorcowej na przykład:Jak uzyskać dostęp do elementów sterujących w głównej strony wzorcowej z zawartości strony w zagnieżdżone strony wzorcowej

<%@ 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> 

i zagnieżdżone strony wzorcowej:

<%@ 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> 

i utworzyć stronę na podstawie tego pod-strony wzorcowej:

<%@ 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> 

Chcę kliknąć jednym kliknięciem Button1 tekst głównej strony wzorcowej.

Jak mogę to zrobić?

Odpowiedz

17

W PageMasterPageNested.aspx:

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

powinno działać. Spróbuj. Mam nadzieję, że to pomoże.

0

To działa w każdym przypadku. zwłaszcza, jeśli nie wiesz lub nie dbasz o to, ile zagnieżdżonych stron głównych. Mam nadzieję, że to pomaga :)

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

var control = tmp.FindControl("form1"); 
Powiązane problemy