Y at-il une différence entre ces deux scénarios:Comment accéder aux contrôles dans une page maître imbriquée? pourquoi se comporte-t-il différemment des pages de contenu?
(1) L'accès à une propriété sur une page principale d'un enfant régulier
(2) L'accès à une propriété sur une page principale à partir d'une page maître imbriquée
J'ai essayé d'accéder à une zone de texte dans la page principale d'une page de contenu comme ceci:
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
cela fonctionne, mais quand j'ai appliqué la même méthode sur une page maître imbriquée:
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
cela ne fonctionne pas, ai-je oublié quelque chose? J'appelle les deux codes à l'intérieur de regulare charger page_load ...
J'ai également remarqué que je ne peux pas définir la valeur de la zone de texte à l'intérieur de la page maître imbriquée du code derrière, il y a définitivement quelque chose qui manque, qu'est-ce que c'est? Pour faire la lumière sur cette question, voici un exemple:
Nested Maître 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 derrière:
Response.Wrote(tx2.Text);
Je ne reçois rien, pourquoi qu'est-ce que je manque? note que j'ai aussi essayé le contrôle de recherche récursive:
String str = ((TextBox)((Content)FindControl("Content2")).FindControl("tx2")).Text;
encore rien
Si la page maître imbriquée n'appelle pas Page_Load, une autre erreur se produit également car toutes les méthodes Page_Load doivent être appelées (sur la page maître, la page maître imbriquée et la page de contenu). J'ai ajouté quelques informations à ma réponse originale. –