我正在编写一个 DateValidator 控件来充当所有类型的日期验证器。
它将用作必需的验证器、最小/最大验证器和范围验证器,用于客户端的日期比较。
总而言之,我已经编写好了它并且它的功能: 在一个 ASPX 页面中。
出于某种原因,当将其添加到用作模板的 ASCX 用户控件中时,它不会呈现所需的<span>
标记,因此在检查以确保在继续验证之前控件存在时会生成 JavaScript 空引用。
我的类继承BaseValidator
,因此没有,override RenderChildControls
因为我不需要修改输出。要添加我的自定义 javascript,我使用该OnPreRender
方法到RegisterExpandoAttributes
控件,但这不能在 ASCX 中触发,因为控件(跨度标记)永远不会呈现。
有没有人遇到过这种情况,如果有,你做了什么来解决它?
编辑:
好的,又过了 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>
但是当在 ASPX 中的 ASCX 用户控件中时:
<script type="text/javascript">
//<![CDATA[
var Page_ValidationSummaries = new Array(document.getElementById("uc1_cal"));
//]]>
</script>
如您所见,只有验证摘要被识别,而不是我的继承自 BaseValidator 的 CustomValidator 类。如果我能解决为什么它会解决问题。令人沮丧。