Czy jest jakaś różnica między tymi dwoma scenariuszami:Jak uzyskać dostęp do kontroli wewnątrz zagnieżdżonej strony wzorcowej? dlaczego zachowuje się inaczej niż strony treści?
(1) Dostęp do nieruchomości na stronie wzorcowej od zwykłego dziecka
(2) Dostęp do nieruchomości na stronie wzorcowej z zagnieżdżonego stronie wzorcowej
próbowałem uzyskać dostęp do pola tekstowego na stronie głównej od strony zawartości tak:
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
to działa, ale wtedy, kiedy stosuje tę samą metodę na zagnieżdżone strony wzorcowej:
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
To nie działa, czy czegoś brakuje? Wywołuję oba kody wewnątrz regulare page_load handler ...
Zauważyłem też, że nie mogę ustawić wartości pola tekstowego wewnątrz zagnieżdżonej strony wzorcowej z kodu, jest zdecydowanie coś im brakuje, co to jest? aby rzucić światło na ten problem, oto przykład:
Zagnieżdżony Mistrz strony:
<%@ 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>
Kod za:
Response.Wrote(tx2.Text);
mam NIC, dlaczego to, co mnie ominęło? pamiętać, że próbowałem również rekurencyjnej kontroli znajdują się:
String str = ((TextBox)((Content)FindControl("Content2")).FindControl("tx2")).Text;
nadal nic
Jeśli zagnieżdżona strona wzorcowa nie wywołuje Page_Load, coś jeszcze jest nie tak, ponieważ wszystkie metody Page_Load powinny zostać wywołane (na stronie głównej, zagnieżdżonej stronie wzorcowej i stronie treści). Dodałem trochę więcej informacji do mojej oryginalnej odpowiedzi. –