Валидаторы и проблема ClientIDMode (ASP.NET)

В ASP.NET 4.0 появилось свойство ClientIDMode, которое позволяет указать, как идентификаторы элементов html отображаются в выходном html.

В настоящее время мой проект установлен на "Статический" (самый короткий/не содержит идентификаторов иерархии)

При использовании любого валидатора (RequiredFieldValidator, RegularExpressionValidator...), если только элемент управления, который он проверяет, явно имеет свойство ClientIDMode: AutoID Я получаю сообщение об ошибке:

Входной параметр 'controlId' не может быть пустая строка.

Является ли это ожидаемым поведением?

Изменить: будучи немой с сообщением об ошибке, он хотел, чтобы я положил идентификатор в Validator, чего я, очевидно, не делаю (если мне не нужно ссылаться на него).

По-прежнему кажется странным, что по этой причине он должен потерпеть неудачу.

Ответ 1

Я столкнулся с этим несколько иначе: если мой пользовательский элемент управления имел ClientIDMode="Static", я получил ошибку на валидаторах, которые существовали внутри элемента управления (у них не все были ID).

Обходной путь заключается в том, чтобы переключить ClientIDModes на нарушающий пользовательский элемент управления. Надеюсь, это поможет!