2010-06-17 5 views
0

다음 시험 : 제어 ID로 "$ ContentPlaceHolder1 $ 컨트롤의 controlid ctl00"찾을 수 없습니다 제어 (ASP.NET, MS TEST)

[TestClass] 
public class MyTestClass 
{ 
    private TestContext _testContext; 
    protected TestContext TestContext 
    { 
     get { return _testContext; } 
     set { _testContext = value; } 
    } 

    [TestMethod] 
    [HostType("ASP.NET")] 
    [UrlToTest("http://localhost/MyPage.aspx")] 
    public void TestMyPage() 
    { 
     TextBox tb = TestContext.RequestedPage.FindControl("ControlId") as TextBox; 
     Assert.IsNotNull(tb); 
    } 
    } 

이 실패하고 문자열을 사용은 적절한 제어를 제공합니다 ... ASP.NET에는 웹 컨트롤에 대한 "ClientID"속성이 있지만 테스트 (Under VS 2008)에서 컨트롤의 클라이언트 ID를 미리 알 수있는 가능성이 있습니까?

감사합니다.

답변

1

나는 ClientID이 여기에있는 것 같지 않습니다. 나는 당신의 문제가 FindControl이 당신이 생각하는대로하지 않는다고 생각합니다.

FindControl은 재귀가 아닙니다. 텍스트 상자가 ContentPlaceHolder 안에있는 경우 Page이 아니라 자리 표시 자에 FindControl으로 전화해야합니다.

그렇지 않으면 필자는 전체 컨트롤 계층을 검색 할 재귀 FindControl 함수를 작성하는 것이 좋습니다. 예 here을 볼 수 있습니다.

관련 문제