Динамическое создание CustomValidator в управлении сервером
У меня есть собственный серверный элемент управления, который оборачивает RadEditor (в основном текстовое поле). Я пытаюсь добавить CustomValidator к нему динамически, но я продолжаю получать эту ошибку при начальной загрузке страницы
Не удалось найти идентификатор элемента управления 'RadEditor1', на который ссылается свойство 'ControlToValidate' объекта ''.
Вот код, который я использую внутри своего серверного элемента управления для создания CustomValidator:
protected override void OnInit(EventArgs e)
{
var validator = new CustomValidator();
validator.CssClass = "validator-error";
validator.Display = ValidatorDisplay.Dynamic;
validator.ControlToValidate = this.ID;
validator.Text = "You've exceeded the maximum allowed length for this field";
validator.ClientValidationFunction = "checkLength";
this.Controls.Add(validator);
base.OnInit(e);
}
1 ответ
Проблема в том, что RadEditor
инвентарь INamingContainer
Таким образом, ASP.NET начинает поиск среди дочерних элементов управления вашего сервера для элемента управления с именем RadEditor1
, Конечно, это неудачно, потому что RadEditor1
не имеет дочернего элемента управления с именем RadEditor1
,
Уловка, которую я использую, состоит в том, чтобы выбрать специальный идентификатор, такой как "."
означать сам родительский контроль:
protected override Control FindControl(string id, int pathOffset)
{
return (id == ".") ? this : base.FindControl(id, pathOffset);
}
Тогда используйте "."
как ControlToValidate
:
validator.ControlToValidate = ".";