ASP.NET自定义服务器控件生成--验证程序
我正在编写一个DateValidator控件,以用作日期的所有类型的验证器 它将作为客户端上日期比较所需的验证器、最小/最大验证器和范围验证器 总而言之,我已经把它写下来了,它的功能:在一个ASPX页面中 出于某种原因,当将其添加到ASCX用户控件中用作模板时,它不会呈现所需的ASP.NET自定义服务器控件生成--验证程序,asp.net,controls,composite,validation,Asp.net,Controls,Composite,Validation,我正在编写一个DateValidator控件,以用作日期的所有类型的验证器 它将作为客户端上日期比较所需的验证器、最小/最大验证器和范围验证器 总而言之,我已经把它写下来了,它的功能:在一个ASPX页面中 出于某种原因,当将其添加到ASCX用户控件中用作模板时,它不会呈现所需的标记,因此在继续验证之前检查以确保控件存在时,会生成JavaScript空引用 我的类继承了BaseValidator,因此不重写RenderChildControls,因为我不需要修改输出。要添加自定义javascrip
标记,因此在继续验证之前检查以确保控件存在时,会生成JavaScript空引用
我的类继承了BaseValidator
,因此不重写RenderChildControls
,因为我不需要修改输出。要添加自定义javascript,我使用OnPreRender
方法将RegisterExpandoAttributes
添加到控件,但这不能在ASCX中触发,因为控件(span标记)从未呈现过
有人遇到过这种情况吗?如果有,您是如何解决的
编辑:
好的,再过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类。如果我能弄清楚为什么它能解决问题。令人沮丧。 如果使用模板,调用StimaTyIn()方法…
也许你应该考虑使用。我认为它具有您描述的所有功能,并且已经构建好了。
能否在创建所需的span标记的位置添加一个代码段?这就是我要说的。BaseValidator处理SPAN标记的呈现。创建复合控件时,我不需要像普通控件那样覆盖RenderChildControls。默认情况下呈现SPAN标记,我不需要修改输出HTML。ASCX控件被用作可以反复使用的模板。它没有实现ITemplate。我正在为我的公司构建一套完整的控件。这只是大约50个其他项目中的一个。我构建它们是为了为公司节省资金,并确保它们是开源的、完整的文档,并且相对容易修改。