FindControl의 작동 방식이나 범위 작동 방식과 관련이 있는지 알 수 없습니다. 하지만 기본 클래스는 하위 클래스의 필드를 보는 데 어려움을 겪고 있습니다. 현재 파생 클래스를 기본 클래스에서 속성을 설정하도록 계획하고 있지만 많은 파생 클래스가 있으므로 매우 매력적인 솔루션은 아닙니다.기본 클래스는 파생 클래스의 보호 된 필드를 볼 수 있습니까?
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;
}
아! 너는 나를 올바른 길로 인도했다. 이 컨트롤은 Table 컨트롤의 컨트롤 컬렉션에 있습니다. 그것을 찾기 위해 재귀적인 검색을해야했습니다. 각 페이지에서 약간 다른 테이블에 포함 된 레이블이기 때문에 기본 클래스로 이동할 수 없습니다. – MatthewMartin