Не удается найти управление (ASP.NET, MS TEST) - PullRequest
0 голосов
/ 18 июня 2010

Следующий тест:

[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" в качестве идентификатора элемента управления обеспечивает надлежащий элемент управления ... Я знаю, ASP.NET содержит свойство "ClientID"для веб-элементов управления, но есть ли возможность заранее узнать идентификатор клиента элемента управления в ТЕСТ (под VS 2008)?

Спасибо.

1 Ответ

1 голос
/ 18 июня 2010

Я не думаю, что ClientID - это то, что вы ищете здесь. Я думаю, что ваша проблема в том, что FindControl не делает то, что вы думаете.

FindControl не является рекурсивным. Если ваше текстовое поле находится внутри ContentPlaceHolder, то вам нужно позвонить FindControl для заполнителя, а не Page.

В противном случае я предлагаю написать рекурсивную функцию FindControl, которая будет искать всю иерархию элементов управления. Вы можете увидеть пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...