2010-06-17 35 views
0

以下測試:找不到控制(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); 
    } 
    } 

失敗,並且使用字符串 「ctl00 $ ContentPlaceHolder1 $控件ID」 爲控件ID提供適當的控制...我知道,ASP.NET包含網絡控制「客戶端ID」屬性,但是否有可能預先知道在TEST(下VS 2008)控制的客戶端1d?

謝謝。

回答

1

我不認爲ClientID是你在這裏後,在做什麼。我覺得你的問題是,FindControl是不是做你認爲它是。

FindControl不是遞歸。如果你的文本框是一個ContentPlaceHolder裏面,那麼你就需要調用FindControl的佔位符,而不是Page

否則,我建議編寫一個遞歸的FindControl函數來搜索整個控件圖層。你可以看到一個例子here