Je ne sais pas si cela a à voir avec le fonctionnement de FindControl ou le fonctionnement de la portée. Mais ma classe de base a du mal à voir les champs des classes d'enfants. Actuellement, je prévois que la classe dérivée définisse une propriété dans la classe de base, mais il y a beaucoup de classes dérivées, donc ce n'est pas une solution très intéressante.Les classes de base peuvent-elles voir les champs protégés des classes dérivées?
public class BasePage:Page
{
public void DoSomethingWithDerivedPageControl()
{
//foo is always null.
Control foo = FindControl("Foo");
}
}
public class DerivedPage : BasePage
{
//In real life, this is the code generated .aspx.designer.cs file.
protected Label Foo;
}
Ah! Tu m'as mis sur la bonne voie. Il était dans la collection de contrôle d'un contrôle de table. J'ai dû faire une recherche récursive pour le trouver. Impossible de le déplacer vers la classe de base car il s'agissait d'une étiquette incorporée dans un tableau légèrement différent sur chaque page. – MatthewMartin