代码之家  ›  专栏  ›  技术社区  ›  Budda

找不到控件(ASP.NET、MS测试)

  •  0
  • Budda  · 技术社区  · 15 年前

    以下测试:

    [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”属性,但是在测试中是否有可能提前知道控件的客户端ID(在vs 2008中)?

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    8 年前

    我不认为 ClientID 这就是你想要的。我想你的问题是 FindControl 不是做你认为的事。

    发现控制 不是递归的。如果文本框位于 ContentPlaceHolder ,然后你需要打电话 发现控制 在占位符上,而不是 Page .

    否则,我建议编写一个递归findcontrol函数,该函数将搜索整个控件继承关系。你可以看到一个例子 here .