Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET自定义服务器控件生成--验证程序_Asp.net_Controls_Composite_Validation - Fatal编程技术网

ASP.NET自定义服务器控件生成--验证程序

ASP.NET自定义服务器控件生成--验证程序,asp.net,controls,composite,validation,Asp.net,Controls,Composite,Validation,我正在编写一个DateValidator控件,以用作日期的所有类型的验证器 它将作为客户端上日期比较所需的验证器、最小/最大验证器和范围验证器 总而言之,我已经把它写下来了,它的功能:在一个ASPX页面中 出于某种原因,当将其添加到ASCX用户控件中用作模板时,它不会呈现所需的标记,因此在继续验证之前检查以确保控件存在时,会生成JavaScript空引用 我的类继承了BaseValidator,因此不重写RenderChildControls,因为我不需要修改输出。要添加自定义javascrip

我正在编写一个DateValidator控件,以用作日期的所有类型的验证器

它将作为客户端上日期比较所需的验证器、最小/最大验证器和范围验证器

总而言之,我已经把它写下来了,它的功能:在一个ASPX页面中

出于某种原因,当将其添加到ASCX用户控件中用作模板时,它不会呈现所需的
标记,因此在继续验证之前检查以确保控件存在时,会生成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个其他项目中的一个。我构建它们是为了为公司节省资金,并确保它们是开源的、完整的文档,并且相对容易修改。