How to access controls inside a nested master page? why does it behave differently from content pages

asp.netmaster-pagesnested

Is there a difference between these two scenarios:

(1) Accessing a property on a master page from a regular child

(2) Accessing a property on a master page from a nested master page

I tried to access a textbox in the master page from a content page like this:

TextBox a;
a = (TextBox)Master.FindControl("ayyash"); // Master is declared in MasterType directive
defaultTextbox.Text = a.Text; // defaultTextBox is a textbox control inside default.aspx

it works, but then when I applied the same method on a nested master page:

TextBox a;
a = (TextBox)Master.FindControl("ayyash"); // Master is declared in MasterType directive
myTextBox.Text = a.Text; // myTextBox is a textbox control inside child.master

this does not work, am I missing something? I call both codes inside regulare page_load handler…

I also noticed I cannot set textbox value inside the nested master page from code behind, there is definitely something im missing, what is it?
To shed light on this issue, here is an example:

Nested Master Page:

<%@ Master Language="C#" MasterPageFile="MasterPage.master" AutoEventWireup="false" CodeFile="MasterPage2.master.cs" Inherits="MasterPage2" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<asp:textbox id="tx2" runat="server" text="this is two"></asp:textbox>
<asp:contentplaceholder id="newstuff" runat="server"></asp:contentplaceholder>
</asp:Content>

Code behind:

Response.Wrote(tx2.Text);

I get NOTHING, why what did I miss? note that I also tried the recursive find control:

String str = ((TextBox)((Content)FindControl("Content2")).FindControl("tx2")).Text;

still nothing

Best Answer

ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.Master.FindControl("ContentPlaceHolder1");
  //base content place holder id

Label objLabel3 = (Label)cp.FindControl("lblNested");
  //lblNested is id in nested master page