以下测试:
[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 $ ControlId”作为控件ID提供了正确的控件...我知道,ASP.NET包含用于web控件的“ClientID”属性,但有没有可能知道在TEST中推进控件的客户端ID(在VS 2008下)?
感谢。
答案 0 :(得分:1)
我认为ClientID
不是你在这里所追求的。我认为你的问题是FindControl
没有做你想象的那样。
FindControl
不是递归的。如果您的文本框位于ContentPlaceHolder
内,则需要在占位符上调用FindControl
,而不是Page
。
否则,我建议编写一个递归的FindControl函数来搜索整个控件层次结构。您可以看到示例here。