Я пишу элемент управления DateValidator, чтобы он работал как валидатор всех типов для дат.
Он будет функционировать как обязательный валидатор, мин / макс валидатор и валидатор диапазона для сравнения дат на стороне клиента.
В общем, я написал и он работает: на странице ASPX.
По какой-то причине при добавлении его в пользовательский элемент управления ASCX для использования в качестве шаблона он не отображает обязательный тег <span>
и, таким образом, генерирует нулевую ссылку JavaScript при проверке, чтобы убедиться, что элемент управления существует до продолжения проверки .
Мой класс наследует BaseValidator
и поэтому не override RenderChildControls
, поскольку мне не нужно изменять вывод. Чтобы добавить свой пользовательский javascript, я использую метод OnPreRender
для RegisterExpandoAttributes
элемента управления, но он не может быть запущен в ASCX, так как элемент управления (тег span) никогда не отображается.
Кто-нибудь сталкивался с этим, и если да, что вы сделали, чтобы это исправить?
EDIT:
Хорошо, еще через 3 часа я заметил, что пропущена очень важная строка:
При запуске внутри страницы ASPX это отображается в HTML:
<script type="text/javascript">
//<![CDATA[
var Page_ValidationSummaries = new Array(document.getElementById("cal"));
var Page_Validators = new Array(document.getElementById("valTest"));
//]]>
</script>
Но в пользовательском элементе управления ASCX в ASPX:
<script type="text/javascript">
//<![CDATA[
var Page_ValidationSummaries = new Array(document.getElementById("uc1_cal"));
//]]>
</script>
Как видите, распознается только Сводка проверки, а не мой класс CustomValidator, унаследованный от BaseValidator. Если я могу сгладить, почему это решит проблему. Разочарование.