Установка идентификатора элемента управления в коде для использования в элементе проверки - PullRequest
0 голосов
/ 26 января 2012

Как я могу использовать элементы проверки в элементах управления сервером?Проблема, которая у меня есть, заключается в том, что по умолчанию, если я делаю что-то вроде этого:

private TextBox _textbox;
RequiredFieldValidator _validator;

protected override void OnInit(object sender, EventArgs e)
{
    _textbox= new TextBox {ID = "test"};
    _validator = new RequiredFieldValidator{ControlToValidate = _textbox.ID};
}

protected override void OnLoad(object sender, EventArgs e)
{
    this.Controls.Add(_textbox);
    this.Controls.Add(_validator);
}

Тогда это работает нормально, но потому что я установил идентификатор в коде позади текстового поля, есть идентификатор теста в реальнойсгенерированный HTML (вместо ctl1_ctl2_test или чего-то еще). Это означает, что если я использую элемент управления дважды на одной странице, то получаю ошибку.Если я не установлю идентификатор, то он будет нулевым, и валидатор не сможет найти элемент управления.

Любая помощь будет отличной,

Спасибо,

Джо

1 Ответ

0 голосов
/ 26 января 2012

Просто добавьте INamingContainer в список интерфейсов, реализованных вашим серверным элементом управления:

public class RequiredTextBox : Control, INamingContainer

Теперь идентификатор дочернего элемента TextBox будет ограничен идентификатором элемента управления сервером, что позволит избежатьКонфликт ID.

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