0

我正在编写一个 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 类。如果我能解决为什么它会解决问题。令人沮丧。

4

2 回答 2

1

也许您应该考虑使用Excentrics World 的免费日历弹出窗口。我认为它具有您描述的所有功能,并且已经构建。

于 2009-11-12T15:09:03.140 回答
0

如果您使用的是模板,请调用 InstantiateIn() 方法....

于 2009-11-12T15:07:30.333 回答